美文网首页
004将引入的随机字符串进行再打乱分配

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

作者: 弗兰基的自由之路 | 来源:发表于2022-11-12 21:20 被阅读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))


    相关文章

      网友评论

          本文标题:004将引入的随机字符串进行再打乱分配

          本文链接:https://www.haomeiwen.com/subject/efskxdtx.html