Python 连续10次掷硬币的几率

Python 连续10次掷硬币的几率,python,Python,我可以很容易地找到100个中的人头数,以及100次掷硬币中的人头数。代码如下。然而,我不知道如何轻松获得连续10次掷硬币的几率 你需要掷硬币10次,但只有当他们都是正面的时候,你才能报告成功。使用反向逻辑执行此操作:如果任何一个出现尾部,请将您的标志设置为False all_heads = True for i in range(10): number = random.randrange(0,2) if number != 0: all_heads = Fals

我可以很容易地找到100个中的人头数,以及100次掷硬币中的人头数。代码如下。然而,我不知道如何轻松获得连续10次掷硬币的几率


你需要掷硬币10次,但只有当他们都是正面的时候,你才能报告成功。使用反向逻辑执行此操作:如果任何一个出现尾部,请将您的标志设置为False

all_heads = True
for i in range(10):
    number = random.randrange(0,2)
    if number != 0:
        all_heads = False
或者,更简洁地说

all_heads = True
for i in range(10):
    all_heads &= random.randrange(0,2) == 0
。。。甚至更像蟒蛇

all_heads = all(random.randrange(0,2) == 0 for i in range(10))
无论你选择哪一个,你都需要做足够的次数来近似统计宇宙。由于您希望在1024次试验中仅获得一次成功,因此您需要10000-100000次试验。计算成功的次数,除以试验次数。你已经知道该怎么做了


扰流板:

考虑到头部运行的长度,n,以及试验次数,这将减少到

print (sum(all(random.randrange(0,2) for _ in range(n)) \
          for _ in range(trials))                       \
       / float(trials) )

欢迎使用Python.:-)

你需要掷硬币10次,但只有当硬币都是正面朝上时,才能报告成功。使用反向逻辑执行此操作:如果任何一个出现尾部,请将您的标志设置为False

all_heads = True
for i in range(10):
    number = random.randrange(0,2)
    if number != 0:
        all_heads = False
或者,更简洁地说

all_heads = True
for i in range(10):
    all_heads &= random.randrange(0,2) == 0
。。。甚至更像蟒蛇

all_heads = all(random.randrange(0,2) == 0 for i in range(10))
无论你选择哪一个,你都需要做足够的次数来近似统计宇宙。由于您希望在1024次试验中仅获得一次成功,因此您需要10000-100000次试验。计算成功的次数,除以试验次数。你已经知道该怎么做了


扰流板:

考虑到头部运行的长度,n,以及试验次数,这将减少到

print (sum(all(random.randrange(0,2) for _ in range(n)) \
          for _ in range(trials))                       \
       / float(trials) )

欢迎使用Python.:-)

现在一个实验相当于十次翻转。你必须经常重复,以获得你想要的结果(10头):

import random

n = int(input("Enter the number of tries: "))  # 1 try = 10 flips
ten_head_count = 0

for _ in range(n):
    if all(x==0 for x in (random.randrange(0,2) for _ in range(10))):
        ten_head_count += 1

print("No. of ten heads: ", ten_head_count)
print("No. of tries: ", n)
print("Odds: ", ten_head_count/n)

一个实验现在相当于十次翻转。你必须经常重复,以获得你想要的结果(10头):

import random

n = int(input("Enter the number of tries: "))  # 1 try = 10 flips
ten_head_count = 0

for _ in range(n):
    if all(x==0 for x in (random.randrange(0,2) for _ in range(10))):
        ten_head_count += 1

print("No. of ten heads: ", ten_head_count)
print("No. of tries: ", n)
print("Odds: ", ten_head_count/n)


您知道
(1/2)^10
赔率=sum/n
可能不应该在此处缩进。然后用循环重写
n
变量counter@schwobaseggl:我认为OP需要模拟翻转,而不是计算预期值。@Prune您可能是对的。Irhad,做10次翻转,次数多(>10**5)。然后把你得到10个头的次数除以这个数字。@cricket\u 007你是对的。不应该缩进金额/n您知道的
(1/2)^10
赔率=金额/n
可能不应该缩进那里。然后用循环重写
n
变量counter@schwobaseggl:我认为OP需要模拟翻转,而不是计算预期值。@Prune您可能是对的。Irhad,做10次翻转,次数多(>10**5)。然后把你得到10个头的次数除以这个数字。@cricket\u 007你是对的。当
number!=0
,不仅应将
所有头
设置为
False
,还应尽早退出
for
循环,尤其是如果要模拟执行次数非常多的循环,你是对的。为了简单起见,我省略了这一点,并在稍后与all方法保持了一点一致性。我没有考虑使用反向逻辑,但在添加了您提到的代码部分后,它似乎起到了作用。感谢您的帮助:D@Prune我知道的
all
方法。我试图让OP在智能上可以访问这些步骤。在第一个片段中,当
number!=0
,不仅应将
所有头
设置为
False
,还应尽早退出
for
循环,尤其是如果要模拟执行次数非常多的循环,你是对的。为了简单起见,我省略了这一点,并在稍后与all方法保持了一点一致性。我没有考虑使用反向逻辑,但在添加了您提到的代码部分后,它似乎起到了作用。感谢您的帮助:D@Prune我知道的
all
方法。我试图让OP在智力上能够理解这些步骤。看起来这是一个非常简单和好的方法。谢谢,这是一个非常简单又好的方法。谢谢