真Python随机百分比

2024-05-20 01:52:03 发布

您现在位置: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%的机会获胜。但是random()<;.87如何定义A将获得87%呢?

当我读到它时,它说: 如果随机数小于.87

这是我希望澄清的,因为随机小于0.87对我来说没有意义。


Tags: fromimportforif语法futurerandomwin
1条回答
网友
1楼 · 发布于 2024-05-20 01:52:03

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个不同的值大得多。

相关问题 更多 >