比方說,我有這樣的代碼麻煩與計算隨機次數
import random
def fooFunc():
return 1
什麼是使用下面的代碼在正在執行的fooFunc
整體機會呢?
if random.randrange(4096)==1:
fooFunc()
if random.randrange(256)==1:
fooFunc()
比方說,我有這樣的代碼麻煩與計算隨機次數
import random
def fooFunc():
return 1
什麼是使用下面的代碼在正在執行的fooFunc
整體機會呢?
if random.randrange(4096)==1:
fooFunc()
if random.randrange(256)==1:
fooFunc()
到random.randrange
每個調用可以作爲獨立的隨機選擇治療,提供你不知道種子,並樂於將PRNG的輸出視爲一個隨機變量。
什麼fooFunc的整體機會正在執行?
假設你不在乎跟蹤fooFunc
是否被調用兩次? 這只是正常的概率計算,類似於「當我滾動兩個骰子時滾動至少一個6的概率」。要做到這一點,將問題重新定義爲「我不滾動任何6的概率是多少」,並從1.0中減去這個問題比較容易,因爲只有一個失敗的兩個檢查組合,而有3個成功的一個或另一個或兩者的組合。
所以p = 1 - ((4095/4096) * (255/256))
偉大的答案@尼爾斯萊特 –
我建議這不是一個Python的問題,更適合https://math.stackexchange.com/ - 詢問概率。隨着random.randrange(x)產生一個介於0和x之間的數字(包括0,但不包括x),你將有一個產生任何特定數字的1/x probability
。
請參閱尼爾·斯萊特的回答對您的情況來計算具體的概率。
(請在這裏看到,如果你想看看)random.randrange的內部(:How does a randrange() function work?)
好吧,我會的,非常感謝! – TetsuyaGR
你知不知道爲什麼它被稱爲隨機..而且使問題看起來像一個你不能說它麻煩 – Gahan
我只是想知道如何計算fooFunc的發生整體機會..如果我只有random.randrange(4096)== 1,那麼顯然機會是1/4096,但現在我有2個randrange,fooFunc發生的整體機會是多少? – TetsuyaGR
嘗試'[random.randrange(256)for x in range(300)]。count(1)'在300個隨機數列表中存在1的返回數目1;你有時可能會得到0或2或更少或更少。你不能保證結果 – Gahan