首页 > 解决方案 > 从随机数中选择所有数字的概率是否相等?

问题描述

当调用 random.randrange 函数时,从中提取数字的机会是否完全相等?如果是这样,它是如何完成的?

标签: python

解决方案


是的,分布是均匀的,这意味着从 n 个输入中,每个输入都有 1/n 的机会被选中。

我不知道实际实现的算法,但您可以在此处查看源代码: https ://github.com/python/cpython/blob/master/Lib/random.py

据我所知,生成伪随机数涉及很多数学。 https://en.wikipedia.org/wiki/Pseudorandom_number_generator

编辑:作为一个有趣的练习,我制作了一个脚本,它生成 100 万个介于 0 和 5 之间的随机数,并且我对它们中的每一个进行计数,并且您可以猜测每个数字的计数应该在 200000 左右相同:

from random import randrange
from pprint import pprint

c = {}
for i in range(1000000):
    r = randrange(0, 5)
    if r not in c:
        c[r] = 0
    c[r] += 1

pprint(c)

推荐阅读