我有一个用于掷硬币或“正面或反面”的代码,但我想计算连续弹出5个正面的概率,但是我不知道该怎么做。
import random
flips = 1
heads = 0
tails= 0
while flips <= 100:
coin = random.randint(1,2)
flips +=1
if coin == 1:
print("Heads")
heads += 1
elif coin == 2:
print("tails")
tails += 1
print("You got " + str(heads) + " heads and " + str(tails) + " tails!")
raw_input("Exit")
答案 0 :(得分:2)
这似乎是一个作业问题,所以我将尝试讲解该方法,而不是给出答案:
将一枚硬币翻转为“正面”的可能性:
您需要找到1个结果的机会除以结果总数
probability = number_of_chances_heads / total_number_of_outcomes
找到将硬币连续翻转为“正面” 5倍的概率:
您需要将原始概率乘以所需结果的次数。
fivex_probability = probability ** number_of_times_you_want_outcome
答案 1 :(得分:2)
P(E)
有几种定义,即事件E
发生的概率。但是对于您的模拟,我们必须根据执行试验并查看结果进行模拟。
该实验包括连续扔5个硬币并观察是否连续出现5个头。当然,一旦获得尾巴,完成5次抛硬币就没有意义了(请注意)。每次您进行多达5次抛硬币并观察5次头部是否都举起 trial 。如果您进行N
次试验,并且观察到M
次连续N
的头部上升了5次,那么随着试验次数N
接近无穷大,{ {1}}。
当然,您将无法进行无数次试验,但是您应该尝试使用不同的大N值,然后看看会得到什么结果。
因此,外部循环执行了P(5 head tosses) = M/N
次。这些是试验。内循环执行1至5次(直到出现尾巴)。如果您成功掷出5个成功的头部,则可以增加N
,该值最初为0。最终概率为M
。
答案 2 :(得分:0)
一次得头的概率是0.5,而连续5次得头的概率是0.5 ^ 5 = 0.03125
如果您想在python中执行此操作,则可以执行该操作,但是您似乎要尝试通过使用montecarlo方法进行模拟AKA来近似结果。您实际上已经快到了:)
import random
flips = 1
heads = 0
tails= 0
num_tests = 1000
passed_tests = 0
for flips in range(num_tests):
heads, tails = 0, 0
for subflip in range(5):
coin == random.randint(1,2)
if coin = 1:
print("Heads")
heads += 1
elif coin == 2:
print("tails")
tails += 1
if heads == 5:
print("had 5 heads in a row!")
passed_tests+=1
print("Got 5 heads in a row {} times {:.2%} of the time".format(passed_tests, passed_tests/float(num_tests)))