为什么 randint 看起来分布不均匀?

问题描述 投票:0回答:1

考虑代码:

from random import randint
from math import log10

print(log10(sum([randint(0, 1e12) for _ in range(int(1e6))]) / 1e6))

我相信结果应该接近11,但输出却是:

11.699144269464252

一些背景:

root@debian:~# python3 --version
Python 3.11.2
root@debian:~# uname -a
Linux debian 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux
python math random
1个回答
0
投票

如果

sum([randint(0, 1e12) for _ in range(int(1e6))]) / 1e6)
均匀分布,则
1e12 / 2
的预期值为
randint

所以预期结果应该是

log10(1e12 / 2)
,即
11.698970004336019
,这与您得到的结果非常接近。

© www.soinside.com 2019 - 2024. All rights reserved.