这是问题陈述=> 在抛掷一枚公平硬币的游戏中,正面朝上玩家可获得 5 美元,反面朝上则损失 3 美元。 8 次抛掷后,计算获得 20 美元净收益的概率。 我必须使用二项式分布来解决问题,并且还需要编写验证答案的 python 代码。
所以我决定写代码。 这是代码=>
import random
toss = [0,1]
#0 for head
#1 for tail
def run():
gain = 0
for i in range(8):
if random.choice(toss) == 0:
gain += 5
else:
gain -= 3
return gain #final gain for 8 trials
# print("this is final gain {}".format(gain))
#print(run())
num_of_tests = 0
while run() != 20:
print(run())
num_of_tests += 1
print("Tests ran => ", num_of_tests)
使用此代码,即使我循环 1000 次,经过 8 次试验后,我也没有获得 20 美元的最终收益。 我很困惑。我哪里做错了。 代码中是否有错误。 或者问题的答案是0%?
基础数学:增益 = n_heads * 5 - 3 * (N_tosses - n_heads)
所以:增益 = n_heads*8 - 3 * N_tosses
8 次抛掷获得 20 意味着: 20 = 8 * n_heads - 3*8
所以 n_heads = 44/8 因此 n_heads = 11/2 这是不可能的
不需要 python 代码... 如果您真的想编写代码,我会这样做:
import random
def gain():
return random.choice([-3,5])
def proba(x,results):
return results.count(x) / len(results)
n_trials = 2000
n_tosses = 8
#for each trial, compute the sum of the gains for a given number of tosses
results = [sum([gain() for _ in range(n_tosses)]) for _ in range(n_trials)]
print(proba(20,results))
无论你进行多少次尝试,它总是会给你 0...