我在Python中有一個很大的腳本。我在其他人的代碼中激發了我自己,所以我最終使用了numpy.random
模塊來完成某些事情(例如,創建一個從二項分佈中獲取的隨機數組),而在其他地方我使用模塊random.random
。Python中的numpy.random和random.random之間的區別
有人能告訴我兩者之間的主要區別嗎? 看看這兩個文檔的網頁,在我看來,numpy.random
只是有更多的方法,但我不清楚隨機數的產生方式是不同的。
我問的原因是因爲我需要爲我的主程序進行種子調試。但是它不起作用,除非我在我導入的所有模塊中使用相同的隨機數生成器,這是正確的嗎?
此外,我在另一篇文章中閱讀了關於不使用numpy.random.seed()
的討論,但我不明白爲什麼這是一個糟糕的主意。如果有人向我解釋爲什麼會出現這種情況,我會很感激。
作爲一個遠親音符,它有時neccesary *既不是*使用,因爲梅森捻線機不產生熵足夠的加密的隨機序列(和一些不尋常的科學)目的。在這些罕見的情況下,您經常需要[Crypto.Random](https://www.dlitz.net/software/pycrypto/apidoc/Crypto.Random.random-module.html),它可以使用特定於操作系統的熵源生成非確定性的隨機序列,其質量遠高於僅從random.random獲得的質量。不過你通常不需要這個。 – SingleNegationElimination
謝謝你Hannnele。你的見解非常有用!事實證明,我不能逃脫只使用一個隨機數字生成器,(因爲隨機不會產生二項分佈,所以它必須是numpy),因爲我的程序的一部分調用另一個使用隨機的程序。我將不得不種下兩臺發電機。 – Laura
「如果你知道你現在擁有哪個號碼,那麼可以絕對確定接下來會接下來的號碼。」我認爲這個聲明可能需要一些澄清。意思是,如果你知道發電機的內部狀態*,你可以重現序列 - 這就是你在發電機發電時所做的事情。給定發電機的單個數字輸出,您無法預測下一個數字。這個週期非常大,在計算僞隨機序列的位置並預測下一個序列之前,可能需要很長的數字序列。 –