Python如何统计随机序列数字抽取情况 模拟12个数字全抽取所需次数
Python实现代码及说明
核心逻辑
这是典型的「优惠券收集问题」模拟,核心逻辑是利用集合自动去重的特性,判断是否已经收集到全部12个数字,单次试验收集完成后记录抽取次数,重复1000次即可得到最终的统计结果列表。
完整实现代码
import random # 初始化存储1000次试验结果的列表 result = [] # 待抽取的0-11数字列表 nums = list(range(12)) for _ in range(1000): collected = set() draw_count = 0 # 持续抽取直到集齐12个数字 while len(collected) < 12: draw_num = random.choice(nums) collected.add(draw_num) draw_count += 1 # 存入本次试验的抽取总次数 result.append(draw_count)
代码说明
- 依赖仅为Python标准库
random,无需额外安装第三方包 - 用集合
collected存储已抽到的数字,自动过滤重复抽取的结果,只需判断集合长度是否为12即可确认是否收集完成 - 最终
result列表就是1000次试验的统计结果,按顺序存储了每次试验所需的抽取总次数 - 若要验证结果合理性,可计算结果平均值:12个元素的优惠券收集问题理论期望抽取次数约为37次,1000次模拟的平均结果会在37附近浮动
内容的提问来源于stack exchange,提问作者周鼎杰
相关产品推荐
相关产品推荐

