随机模块中的数字是不是有相同的机会出现或不出现? [复制]
Posted
技术标签:
【中文标题】随机模块中的数字是不是有相同的机会出现或不出现? [复制]【英文标题】:Do numbers, in random module, have the same chance to appear or not to appear? [duplicate]随机模块中的数字是否有相同的机会出现或不出现? [复制] 【发布时间】:2021-04-04 00:33:33 【问题描述】:我想用 Python 构建一个程序,用于生成乐透中的危险号码。例如从 1 到 45 ,我希望 1 到 45(包括 1 到 45)之间的每个数字都有相同的机会出现或不出现,就像在现实生活中一样。 什么是(或什么是)可以做到这一点或更接近做到这一点的适当随机数(近似值)。 示例 值= random.randint(1,46) 1 到 45 之间的所有数字是否有相同的机会出现或不出现在卷轴世界中? 计算机世界中的机会是否像卷轴世界中的机会,如果不是,如何使其更接近? 这与重复无关。 感谢您的帮助
【问题讨论】:
from random import randint
然后randint(1, 45)
是的,所有数字都应该有相同的机会。如果不是这样,那将是底层随机数生成器中的一个严重错误。如果要测试它,只需重复生成随机数并计算每个随机数的出现次数。在数百万个数字之后,您应该看不到统计上的显着差异。
【参考方案1】:
您想从区间 [1, 45] 上的离散均匀分布中抽取 k 个数字,而无需替换。
假设您要选择 6 个数字。然后写
import random
winners = random.sample(range(1, 46), k=6)
然后winners
将是六个随机选择的数字的列表。
解释:
range(1, 45)
表示区间 [1, 45)。换句话说,它不包括 45。所以第二个参数是 46。
sample
从 45 的范围内选择 k 个数字,没有替换。换句话说,就像在典型的彩票中一样,不会选择两次 - 这是您不能指望使用其他 random
模块功能。
默认分布均匀;每个数字被选中的可能性均等。
【讨论】:
感谢您的确认和示范以上是关于随机模块中的数字是不是有相同的机会出现或不出现? [复制]的主要内容,如果未能解决你的问题,请参考以下文章