考虑代码:
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
如果
sum([randint(0, 1e12) for _ in range(int(1e6))]) / 1e6)
均匀分布,则 1e12 / 2
的预期值为 randint
。
所以预期结果应该是
log10(1e12 / 2)
,即11.698970004336019
,这与您得到的结果非常接近。