计算随机发生的麻烦

时间:2017-09-12 08:41:36

标签: python

假设我有这段代码

import random

def fooFunc():
    return 1

使用以下代码时fooFunc被执行的总体机会是多少?

if random.randrange(4096)==1:
    fooFunc()
if random.randrange(256)==1:
    fooFunc()

2 个答案:

答案 0 :(得分:2)

我建议这不是一个python问题,更适合https://math.stackexchange.com/ - 询问概率。

由于random.randrange(x)产生一个介于0和x之间的数字(包括0,但不包括x),你可以生成任何特定数字的1/x probability

请参阅Neil Slater关于计算您情况中具体概率的答案。

(如果你想看看random.randrange()的内部,请看这里:How does a randrange() function work?

答案 1 :(得分:2)

random.randrange的每次调用都可视为独立随机选择,提供您不知道种子,并乐意将PRNG的输出视为随机变量

  

执行fooFunc的总体机会是什么?

假设您不关心跟踪fooFunc是否被调用两次? 这只是正常的概率计算,类似于"当我滚动两个骰子时,至少有一个6滚动的几率是多少?#34;。要做到这一点,更容易重新制定问题为"我不会滚动任何6"并从1.0中减去该概率的概率是多少,因为只有一个失败的组合两种检查,而后续的一种或其中一种或两种都有3种组合。

所以p = 1 - ((4095/4096) * (255/256))