为什么一百万个随机数的平均值不在范围的中间?

所以我正在编写一个random.randint()在 python中使用的脚本,但这并不重要,因为我认为大多数主流语言都有这个“问题”。是这样的:我设置i为一个随机数,然后将一个随机数相加100万次,然后将其除以2。输出变化很大,有时接近 0,有时接近 1,但从逻辑上讲,输出应该几乎是0.5. 是什么导致了这种变化。

from random import randint

i = randint(0, 1)
for x in range(1000000):
    i = (i + randint(0, 1)) / 2
print(i)

回答

您的方法不是计算所有百万数字的平均值。它只是重复计算一个聚合,其中每一步都是前一个值和一个新数字的平均值。这将使得添加到系列中的每个新值都会对结果“平均”值产生不成比例的大影响,这与每个值对结果产生同等影响的真实平均值相反。

要明白我的意思,请考虑以下代码:

from random import randint

nums = [randint(0, 1) for x in range(0, 1000)]

avg = 0
for i in nums:
  avg += i
avg /= len(nums)

pseudo_avg = 0
for i in nums:
  pseudo_avg = (pseudo_avg + i) / 2

print('True Average: %s' % avg)
print('Pseudo-average: %s' % pseudo_avg)

在一次运行中,我得到以下结果:

True Average: 0.492
Pseudo-average: 0.979068653199454


以上是为什么一百万个随机数的平均值不在范围的中间?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>