从random随机数看验证码重复数字

天翼云开发者社区
• 阅读 1

本文分享自天翼云开发者社区《从random随机数看验证码重复数字》.作者:王****淋

推导:

  1. 有6个不同数字
  • (0个重复数字: 1+1+1+1+1+1): $$p(6) = C_{10}^6 * 6! \div 10^6$$
  1. 有5个不同数字
  • (某个数字重复了2次: 1+1+1+1+2): $$p(5) = (\frac{C_{10}^5 * C_5^1}{2!1!1!1!1!} ) * 6! \div 10^6$$ $$ = (\frac{C_{10}^5 * C_5^1}{2!} ) * 6! \div 10^6$$
  1. 有4个不同数字
  • (某个数字重复了3次: 1+1+1+3,或某2个数字各重复2次: 1+1+2+2)。(省略$1!$): $$p(4) = (\frac{C_{10}^4 * C_4^1}{3!} + \frac{C_{10}^4 * C_4^2}{2!*2!}) * 6! \div 10^6$$
  1. 有3个不同数字
  • (某个数字重复了4次: 1+1+4,或某个数字重复3次+某数字重复2次: 1+3+2, 或3个数字哥重复2次: 2+2+2): $$p(3) = (\frac{C_{10}^3 * C_3^1}{4!} + \frac{C_{10}^3 * C_3^1 * C_2^1}{3!2!} +\frac{C_{10}^3 * C_3^3}{2!2!*2!}) * 6! \div 10^6$$
  1. 有2个不同数字
  • (某个数字重复了5次: 1+5,或某个数字重复4次+某数字重复2次: 4+2, 或2个数字哥重复3次: 3+3): (省略$1!$): $$p(2) = (\frac{C_{10}^2 * C_2^1}{5!} + \frac{C_{10}^2 * C_2^1}{4!2!} + \frac{C_{10}^2 * C_2^2}{3!3!}) * 6! \div 10^6$$
  1. 有1个不同数字(6个相同的重复数字): $$p(1) = \frac{C_{10}^1}{6!} * 6! \div 10^6$$

蒙特卡洛

import random

# 6位验证码, 相同数字的概率: 蒙特卡洛
def mtkr(count:int=10, is_show:bool=True, debug:bool = False):    
    ans = [0 for i in range(6)]
    for i in range(count):
        array_i = [random.randint(0, 9) for i in range(6)]              
        n = len(list(set(array_i)))
        if debug:
            print(n, ": ", array_i)
        ans[6-n] += 1
    # end_for

    if is_show:
        print('-' * 30)
        print('蒙特卡洛: count:', count, ";  \n模拟结果: ")
        for i in range(6):
            print("unique", 6-i, ": ", ans[i]/count)
    return [i/count for i in ans]

ans = mtkr(100000, is_show=True, debug=False)
print(ans)
res_plot(ans)


# 结果:
# 模拟结果:
# unique 6 : 0.15148
# unique 5 : 0.45396
# unique 4 : 0.32748
# unique 3 : 0.0643
# unique 2 : 0.00278 u
# nique 1 : 0.0
点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
typeScript数据类型
//布尔类型letisDone:booleanfalse;//数字类型所有数字都是浮点数numberletdecLiteral:number6;lethexLiteral:number0xf00d;letbinaryLiteral:number0b101
Wesley13 Wesley13
4年前
java例题_11 求不重复数
1/11【程序11求不重复数字】2题目:有1、2、3、4这四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?3程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。4/567/分析
九路 九路
5年前
Java判断一个数是不是快乐数
快乐数的定义:快乐数(happynumber)有以下的特性:在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1。以十进制为例:28→2²8²68→6²8²100→1²0²0²132→3²2²13→1²3²10→1²0²137→3
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
4年前
MySQL清空表漏洞!
MySQL有一个特点,当某个字段是字符串时,如果你的sql传数字它会尝试把这一列所有值转换成数字进行匹配,如果不是数字则会转换为0.创建表test,并插入测试数据CREATETABLEtest(idvarchar(10)NOTNULL,PRIMARYKEY(id));
OLAP分析数据库适用场景及主流产品对比
本文分享自天翼云开发者社区《》,作者:刘鑫随着企业数字化程度不断提升,数据分析场景越老越丰富,企业在以下几种场景下可能需要使用OLAP(OnlineAnalyticalProcessing,在线分析处理)分析数据库来开展数据分析工作:1.复杂的数据分析:当
天翼云数字政府智慧数据中台通过认证
6月13日,由中国信通院、中国通信标准化协会主办的“数字政府智创沙龙”在线上举办。天翼云凭借丰富的资源与实践经验,顺利通过信通院数字政府智慧中台评估。天翼云高级解决方案架构师黄帆发表题为“数字政府数据中台应用实践”的演讲,详细阐述数据中台在数字政府建设中的重要意义,以及天翼云在建设数字政府数据中台方面的经验成果及优势。近年来,在各地政府全面落实大数据战略进行
数字时代云边端如何协同,听听天翼云怎么说
8月1012日,由中国信息通信研究院、中国通信标准化协会主办的“2022数字化转型发展高峰论坛”在北京召开。大会公布了首届“鼎新杯”数字化转型应用征集活动结果,在数字政府评估结果中,天翼云再获两项认证:天翼云通过专有云模式的政务云服务评估,天翼云数字中台通过数字政府智慧中台评估。天翼云“翼流”全域数字融合无感通行数字孪生收费站案例荣获行业融合应用三等奖。在“
引领行业数字变革,天翼云出席IDC年度盛典暨颁奖典礼!
近日,2024IDC中国年度盛典暨颁奖典礼在上海隆重开幕。天翼云出席大会数字工业行业峰会及金融行业峰会,分享了天翼云的智算布局及在行业数字化转型方面的技术探索和实践成果。
办公网络流量隔离:为高效办公保驾护航
本文分享自天翼云开发者社区《》,作者:thleen一、办公网络流量隔离的必要性在当今数字化办公环境中,办公网络面临着诸多流量拥堵和安全挑战。随着企业规模的不断扩大和办公设备的日益增多,网络流量呈爆炸式增长。不同部门和业务的网络需求各异,如财务部门的大数据处
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
999
粉丝
16
获赞
40