我不明白我在真正的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()&lt; .87定义A会得到87%?
当我读到它时,它说: 如果随机小于.87
这是我希望澄清的,因为随机小于.87对我来说没有意义。
答案 0 :(得分:13)
random.random()
的返回值在[0.0,1.0]范围内均匀分布(因此从0.0到1.0不包括在内),因此它有相同的机会击中该范围内的任何值。
这意味着87%的时间,价值低于.87。
如果您要将其更改为random() < 1.0
的测试,则该测试将100%的时间通过始终。如果您将其更改为random() < 0.0
,它将永远不会通过,所以0%的时间。由于分布是统一的,random() < 0.5
将是True
一半的时间,因为将会选择范围[0.5,1.0]中的另一半时间值。
你可以把它当成骰子卷; 100%的时间,你会滚动一个值&lt; 7用标准的6面骰子。 0%的时间你会滚动一个值&lt; 1,50%的时间你会滚动一个值&lt; 4(1,2或3),以及66.67%的滚动值小于5的时间(因此所有卷的2 / 3rds)。 random.random()
返回值只有多大于6个不同值的范围。