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