2013-03-25 106 views
1

我不明白我在真正的Python书中找到的这种语法,并希望我可以得到一些清晰。真正的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%的获胜几率。但随机()< .87如何定义A会得到87%?

当我看到它,它指出: 如果随机小于0.87

这是我希望澄清,因为随机小于0.87没有道理给我。

回答

10

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%的时间,你会用标准的6面骰子掷出值< 7。 0%的时间你会推出一个价值< 1,50%的时间你会推出一个值< 4(1,2或3),66.67%的时间推出一个值小于5 (所以你所有卷的2/3)。 random.random()返回值只有一个很多较大的范围比只有6个不同的值。

+0

很好的答案谢谢 – sayth 2013-03-26 09:58:53