python编写程序模拟硬币投掷,模拟掷硬币实验RealPython

有人能帮我解释一下下面Realpython分配任务的解决方案吗?我发现的解决方案似乎令人困惑。在

编写一个python脚本,它使用掷硬币模拟来确定这个稍微复杂一些的概率谜题的答案:我不断地翻转一个公平的硬币,直到我看到它至少每个正面和反面都落下一次——换句话说,在我第一次掷硬币之后,我继续掷硬币,直到得到不同的结果。平均来说,我总共要掷多少次硬币?同样,可以计算出实际的概率,但这里的重点是使用randint来模拟事件。为了得到预期的平均投掷次数,你应该设置一个变量试验值为10000,一个变量翻转值为0,然后在每次掷硬币时将1加到你的掷骰变量中。然后你可以在代码末尾打印翻转/试验,看看平均翻转次数是多少。在from random import randint

flips = 0

trials = 10000

for i in range(trials):

first_flip = randint(0, 1)

while randint(0, 1) == first_flip:

flips += 1 # Every flip after the first flip.

print("flips done is {}".format(flips))

print(flips / trials + 2.0) # Initial trial and final trial added.

在上面的情况下,如果第一个“翻转”为0,而while循环条件在第一次随机尝试时生成1,则for循环将迭代而不添加翻转。此外,如果while循环在随机尝试等于first_flip时运行,则在while循环轨迹ie中,for循环中的“i”值不会被添加。简言之,最后的翻身次数或多或少要比试验次数少。在

有人能帮我解释一下这背后的逻辑还是更好的python脚本?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值