我不明白我在真正的python书中找到的这个语法,我希望我能搞清楚。
from __future__ import division
from random import random
total_A_wins = 0
total_B_wins = 0
trials = 100000
for trial in range(0, trials):
A_win = 0
B_win = 0
if random() < .87: # 1st region
A_win += 1
else:
B_win += 1
# determine overall election outcome
if A_win > B_win:
total_A_wins += 1
else:
total_B_wins += 1
print "Probability A wins:", total_A_wins/trials
print "Probability B wins:", total_B_wins/trials
所以在练习中他们说A有87%的机会获胜。但是random()<;.87如何定义A将获得87%呢?
当我读到它时,它说: 如果随机数小于.87
这是我希望澄清的,因为随机小于0.87对我来说没有意义。
random.random()
的返回值在[0.0,1.0]范围内均匀分布(因此从0.0(含0.0)到1.0(不含1.0)),因此它击中该范围内任何值的机会相等。这意味着87%的时间,选择低于0.87的值。
如果您将此更改为
random() < 1.0
的测试,则该测试将在100%的时间内始终通过。如果你把它改成random() < 0.0
,它永远不会通过,所以0%的时间。由于分布是均匀的,random() < 0.5
将是True
时间的一半,因为范围[0.5,1.0]中的另一半时间值将被取而代之。您可以将其视为掷骰子;100%的情况下,您将使用标准的6面骰子掷一个值<;7。0%的时间你会滚动一个值,50%的时间你会滚动一个值,4(1,2或3),66.67%的时间你会滚动一个小于5的值(所以是所有滚动的2/3)。
random.random()
返回值的范围比6个不同的值大得多。相关问题 更多 >
编程相关推荐