python - 从随机数中选择所有数字的概率是否相等?
问题描述
当调用 random.randrange 函数时,从中提取数字的机会是否完全相等?如果是这样,它是如何完成的?
解决方案
是的,分布是均匀的,这意味着从 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)
推荐阅读
- bash - 在 bash 中执行 gcloud 命令
- java - 我们可以使用具有未知批量大小的 ForkJoinPool 实现,它应该“加入”
- php - 获取媒体信息 mgp25/Instagram-API
- javascript - 如何更改顶部标签页眉高度?
- intellij-idea - 即使设置并重新启动,PyCharm CE 也会报告“内存不足”
- node.js - Electron - 无法使用 Google 的 Speech to Text 引擎
- javascript - 使用 Vanilla Javascript 检测文件下载的问题
- c++ - 将文件描述符添加到 epoll 并将事件设置为零是否有效?
- c# - IMAPIProp::SaveChanges: MAPI_E_NO_ACCESS 在尝试对 RDOMail 对象运行操作时
- python - confluent-python 可以生成具有 avro 中的值和字符串中的键的数据吗?