假设我有这段代码
import random
def fooFunc():
return 1
使用以下代码时fooFunc
被执行的总体机会是多少?
if random.randrange(4096)==1:
fooFunc()
if random.randrange(256)==1:
fooFunc()
答案 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))