如documentation描述的機會,random.random將「在範圍[0.0返回下一個隨機浮點數,1.0)」的Python random.random - 滾動0
因此,什麼是它的機會返回0?
如documentation描述的機會,random.random將「在範圍[0.0返回下一個隨機浮點數,1.0)」的Python random.random - 滾動0
因此,什麼是它的機會返回0?
按文檔,它
它產生53位精度
而梅森倍捻機它是基於擁有巨大的狀態空間,比這個大很多倍。它還經常通過位獨立性的統計測試(在設計用於識別RNG輸出中的模式的程序中)。分佈基本上以相等的概率均勻,任何位將是0或1。
越來越精確0.0的概率將是1在2^53(假定未知的內部狀態)
優秀!這將在所有平臺上保持一致嗎?由於對算法或精度的約束,是否可能有更高的機會? – dexgecko
@dexgecko:我認爲它將在大多數Python版本和平臺上保持一致,因爲它們都在源代碼中完全實現Mersenne Twister算法,它不是操作系統或共享庫調用。您可以使用例如'random.seed(12345)',並看到來自'random.random()'的幾個調用的輸出 - 我期望這將在各種Python實現中保持一致。 –
但是,如果你使用'random.SystemRandom'(你應該使用它),這是一個不同的故事。這可能在很大程度上取決於操作系統,CPU和其他因素(熵源)。但是,它應該或多或少地給出幾乎相同的概率。 – freakish
有效地,0 –