当前位置: 首页 > news >正文

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

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

## 推导:

1. 有6个不同数字

- (0个重复数字: 1+1+1+1+1+1):

$$p(6) = C_{10}^6 * 6! \div 10^6$$

2. 有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$$

3. 有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$$

4. 有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$$

5. 有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$$

6. 有1个不同数字(6个相同的重复数字):

$$p(1) = \frac{C_{10}^1}{6!} * 6! \div 10^6$$

## 蒙特卡洛

```py

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

```

http://www.cnnetsun.cn/news/161756.html

相关文章:

  • SpringBoot+Vue Spring boot社区医院管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 基于SpringBoot + Vue的青少年心理健康平台的设计与实现
  • 基于数据挖掘的小米手机营销数据分析与可视化
  • kanass全面介绍(23) - 如何将评审与企业微信通知相结合
  • Langchain-Chatchat是否支持语音输入?扩展功能开发思路分享
  • Langchain-Chatchat等保三级要求满足情况分析:国内合规指南
  • AI 提示词优化工具 v1.0:聚合提示词软件
  • 互联网大厂Java小白求职面试:从Spring Boot到微服务
  • Langchain-Chatchat与外部API联动:动态获取实时数据的方案
  • 如何从红米手机恢复已删除的音乐文件?
  • java计算机毕业设计体检套餐定制系统的设计与实现 基于SpringBoot的个人健康体检预约与智能推荐系统 Java实现的智慧体检服务定制平台
  • 企业知识管理新利器:Langchain-Chatchat离线问答系统全面评测
  • 以为是高薪风口?网安薪资断崖式下跌,现实版围城太真实
  • 破解负载不均难题-多 Agent 系统的复杂度感知调度方案
  • Langchain-Chatchat问答延迟优化技巧:GPU加速让响应快如闪电
  • Langchain-Chatchat Jenkins自动化部署流程:CI/CD一体化实践
  • 33、玩转Windows Vista:游戏兼容性与Xbox 360整合全攻略
  • 教务琐事缠身,效率低下?小麦助教教务系统助力机构实现教务流程自动化
  • SpringBoot+Vue Spring Boot校园闲置物品交易系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 紫金桥软件 | 赋能工业数字化转型
  • SpringBoot+Vue Spring Boot民宿租赁系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • Langchain-Chatchat支持知识库操作灰度回滚吗?
  • Langchain-Chatchat结合百度文心一言提升中文理解
  • Langchain-Chatchat如何设置问答结果的短信推送?
  • Langchain-Chatchat如何设置问答结果的APP推送?
  • 通信工程毕设 stm32 RFID员工打卡门禁系统(源码+硬件+论文)
  • Hi9300同步降压控制器大功率快响应高可靠功能替代L*5156智芯一级代理聚能芯半导体原厂技术支持
  • 42、家庭或小型办公室网络搭建全攻略
  • 8、本地系统管理全攻略
  • 为什么大厂Java面试这么喜欢问并发编程?