【发布时间】:2014-02-02 00:16:18
【问题描述】:
我正在运行一个程序,就像其中一个游戏一样,人们试图猜测 0 到 100 之间的数字,而有 100 人在猜测。然后我平均了有多少不同的猜测。
import random
def averager(times):
tests=[]
for i in range(times):
l=[]
for i in range(0,100):
l.append(random.randint(0,100))
tests.append(len(set(l)))
return (sum(tests))/len(tests)
print(averager(1000))
由于某种原因,不同猜测的次数平均为 63.6
这是为什么?是因为python随机库的缺陷吗?
在人们猜测 1 到 10 之间的数字的场景中
第一个人有 100% 的机会猜出一个之前没有猜到的数字
第二个人有 90% 的机会猜出一个之前没有猜到的数字
第三个人有 80% 的机会猜出一个之前没有猜到的数字
等等……
猜测一个新数字的平均几率(根据我的推理)是 55%。 但数据并没有反映出这一点。
【问题讨论】:
-
我假设您希望它接近 50?
-
另外,你为什么要
set(l)? 同一个数可能让不同的人猜到。 -
不,这是你推理的缺陷。您期望结果是什么,为什么?
-
考虑一个更简单的案例。假设只有两个人,每个人都可以猜测 0 或 1,所以猜测列表将是 [0,0]、[0,1]、[1,0] 或 [1,1]。不同猜测的预期数量是多少?
-
您需要阅读Birthday Paradox。
标签: python math random statistics average