python—当正面数=反面数时停止的无限硬币翻转

python—当正面数=反面数时停止的无限硬币翻转,python,flip,coin-flipping,Python,Flip,Coin Flipping,我是python新手,我正在尝试创建一个coinflip循环,该循环将不断翻转并计算翻转次数,直到正面的数量=反面的数量,在这里它将停止并打印达到该值所需的翻转总数。我试图得到结果,以便继续我的数学课程,但我似乎不知道如何让它停止或打印结果,当我这样做时,它打印0。以下是我目前掌握的代码: import random heads = 1 tails = sum(random.choice(['head', 'tail']) == 'tail' count = 0 while True:

我是python新手,我正在尝试创建一个coinflip循环,该循环将不断翻转并计算翻转次数,直到正面的数量=反面的数量,在这里它将停止并打印达到该值所需的翻转总数。我试图得到结果,以便继续我的数学课程,但我似乎不知道如何让它停止或打印结果,当我这样做时,它打印0。以下是我目前掌握的代码:

import random
heads = 1
tails = sum(random.choice(['head', 'tail']) == 'tail'
count = 0
while True:
    coinresult = random.randint(1, 2) if heads == tails:
    break

print("The number of flips was {count}".format(count = heads + tails))

不确定缩进发生了什么,但请尝试以下操作:

import random
heads = 0 #initialize the count variables
tails = 0

while True:
    coinresult = random.randint(1, 2) #flip coin
    if coinresult == 1: #if result = 1 then increment heads counter
        heads += 1
    elif coinresult == 2: #if result = 2 then increment tails counter
        tails += 1
    if heads == tails: #check if counts are equal and break loop if they are
        break

print("The number of flips was {count}".format(count = heads + tails))
按需要导入itertools
随机输入
def翻转():
尽管如此:

yield(random.getrandbits(1)我认为这将是一个很好的实现

import random

s = 0
iteration = 0
while True:
    coin = random.sample([-1,1], 1)[0]
    s = s + coin
    iteration = iteration + 1
    if s == 0:
        break

print(iteration)

你基本上是在做一个随机游走。它可能需要很长时间才能终止。我运行詹姆斯·肯特的算法20次,数千次中有两次游走。我递归地运行游走100次,平均游走360次,正如你所说,最高的是数千次
import random

s = 0
iteration = 0
while True:
    coin = random.sample([-1,1], 1)[0]
    s = s + coin
    iteration = iteration + 1
    if s == 0:
        break

print(iteration)