004将引入的随机字符串进行再打乱分配

2022-11-12  本文已影响0人  弗兰基的自由之路

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))


上一篇 下一篇

猜你喜欢

热点阅读