重复抛硬币代码中的异常。找不到问题是出在我的代码还是 Python 本身


import random
reiterations=1000
experiments=1000
headcount=0
tailcount=0
idealcount=0
nonidealcount=0
for i in range(1000):
for i in range(experiments):
for i in range(1000):
coin=bool(random.randint(0,1))
if coin==True:
tailcount+=1
else:
headcount+=1
if headcount==tailcount:
idealcount+=1
else:
nonidealcount+=1
print("Ideal outcomes:",idealcount)
print("Non-ideal outcomes:",nonidealcount)

所以这是一段相当简单的代码,我只是有点好奇概率的性质,以及当结果发生时它是如何发散的,所以我决定用一段简单的代码来可视化它。

因此,为了解释它的作用:

-它模拟硬币翻转。(我知道randint((不是那么随机,但嘿,它有效!(

-然后它使用for循环一次又一次地重复这个模拟。for i in range(1000):

-它记录了头部和尾部的数量。

-然后,它使用另一个for循环来重新运行for循环,以一次又一次地重复模拟。for i in range(experiments):我记录了头部数量=否的情况。尾数,或者换句话说,概率理想的实验,以及头数不等于尾数的情况。

到目前为止没有问题,这就是我得到的输出:(当然,由于它是基于随机性的,每次运行它时结果都会发生变化,有时就像它的2998或3997。(

Ideal outcomes: 6
Non-ideal outcomes: 994

我把所有这些都放在另一个循环中,看看理想的结果是如何变化的,问题从哪里开始。。。

Ideal outcomes: 5
Non-ideal outcomes: 995
Ideal outcomes: 6
Non-ideal outcomes: 1994
Ideal outcomes: 6
Non-ideal outcomes: 2994
Ideal outcomes: 8
Non-ideal outcomes: 3992
Ideal outcomes: 8
Non-ideal outcomes: 4992
Ideal outcomes: 8
Non-ideal outcomes: 5992
Ideal outcomes: 9
Non-ideal outcomes: 6991
Ideal outcomes: 9
Non-ideal outcomes: 7991
Ideal outcomes: 9
Non-ideal outcomes: 8991
Ideal outcomes: 9
Non-ideal outcomes: 9991
Ideal outcomes: 9
Non-ideal outcomes: 10991
Ideal outcomes: 9
Non-ideal outcomes: 11991
Ideal outcomes: 9
Non-ideal outcomes: 12991
Ideal outcomes: 9
Non-ideal outcomes: 13991
Ideal outcomes: 9
Non-ideal outcomes: 14991

它做了一件奇怪的事情,不理想的结果稳步增加了1000。

我是python的初学者,据我所见,这段代码没有任何问题,应该可以正常工作,但我不知道它为什么这么做。

有人能向我解释一下这里发生了什么事吗?

对于最外层的For循环,您需要将idealcount和nondealcount数字重置为零。否则,在每一次外部for循环迭代中,您都会将当前idealcount添加到上一次,从而导致您看到的行为每次都会将非idealcount增加1000左右。

最新更新