PS:其实这个是两种思路
老师讲的是非重复添加字符串后,再进行随机内部再添加,也就是在字符串内部随机选取字符添加到任意位置
而我进行的选择是在添加可重复字符串后,再进行内部任意元素任意位置添加(类似于复制粘贴)
整体感觉自己的方案会更加的好,因为本次程序的目的是统计字符出现的个数,所以在进行添加时,选择可重复的添加,会提高相同字符出现的概率。
最后,只要样本量添加的足够,最后都会是殊途同归。
如果选择随机不可重复,使用sample
如果选择随机可重复,使用choices
# ********************************
# 功能:统计字符出现的次数V3.0
# 说明:引入随机字符串,并计算每个字符出现次数
# 编写人:Frank 编写时间:2022年11月12日
# 修改人: 修改内容:
# *******************************************************************
import random,string
dicData= {}
# 定义相关长度随机数
n1=random.randint(1,10)
n2=random.randint(1,52)
n3=random.randint(1,32)
print(type(n1))
# 获取随机长度指定字符的内容
con1=random.choices(string.digits,k=n1)
con2=random.choices(string.ascii_letters,k=n2)
con3=random.choices(string.punctuation,k=n3)
# print(n2,n3,n1)
# 进行相关内容的合并
r1=''.join(con1)
r2=''.join(con2)
r3=''.join(con3)
# print(r1,r2,r3)
result=r1+r2+r3
# 试验4:重复的随机字符
# print(type(result))
listr=list(result)
# print("数据类型",type(listr),listr)
print('初始数据:',listr)
number=len(listr)
# 遍历循环
for iin range(0,number):
n= random.randint(0,number-1) #选择起始位置为1,而不是0,因为选择为零后,就等于没有添加
m= random.randint(0,number-1)
# print(i)
# 取出随机内容
tmp= listr[m]
listr.insert(n,tmp)
# print('添加位置n:',n)
# print('取出位置m:',m)
# print('添加内容',tmp)
print('添加后数据:',listr)
for xin listr:
# print(x)
# r=strCon.count(x)
# print(x,r)
dicData[x]=listr.count(x)
print('次数统计:',dicData)
print(type(dicData))
网友评论