出现“正面”的可能性是多少?

时间:2019-10-25 15:54:56

标签: python probability

我有一个用于掷硬币或“正面或反面”的代码,但我想计算连续弹出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")

3 个答案:

答案 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)))