编写一个程序来模拟将一个公平的硬币扔100次并计算正面数。 重复此模拟10 ** 5次,以获得人数分布。
我在下面的代码中编写了100次头部计数,外循环应该重复执行我的函数100K次以获得头部分布:
import random
def coinToss():
return random.randint(0, 1)
recordList = []
for j in range(10**5):
for i in range(100):
flip = coinToss()
if (flip == 0):
recordList.append(0)
print(str(recordList.count(0)))
但是每次我运行程序时,我没有得到10万个正面概率的列表,而是没有更高的数字,有人能告诉我我做错了什么吗?
42
89
136
....
392
442
491
您永远不会在两次试验之间重设recordList。
这是带有numpy的版本,允许您更优雅地生成随机数,因为您还可以指定size属性。
import numpy as np
n_sim = 10
n_flip = 100
sims = np.empty(n_sim)
for j in xrange(n_sim):
flips = np.random.randint(0, 2, n_flip)
sims[j] = np.sum(flips)
<