關於隨機種子seed 的一點理解

2021-09-24 19:51:10 字數 908 閱讀 3814

import numpy as np

num=0

while(num<5):

np.random.seed(1)

print(np.random.random())

num+=1

print('-------------------------')

num1=0

np.random.seed(2)

while(num1<5):

print(np.random.random())

num1+=1

---------------------

原文:

眾所周知,所謂隨機數其實是偽隨機數,所謂的『偽』,意思是這些數其實是有規律的,只不過因為演算法規律太複雜,很難看出來。

所謂巧婦難為無公尺之炊,再厲害的演算法,沒有乙個初始值,它也不可能憑空造出一系列隨機數來,誒,我們說的種子就是這個初始值。

random隨機數是這樣生成的:我們將這套複雜的演算法(是叫隨機數生成器吧)看成乙個黑盒,把我們準備好的種子扔進去,它會返給你兩個東西,乙個是你想要的隨機數,另乙個是保證能生成下乙個隨機數的新的種子,把新的種子放進黑盒,又得到乙個新的隨機數和乙個新的種子,從此在生成隨機數的路上越走越遠。

好了,回頭看看我們的**:

第一段**把對種子的設定放在了迴圈裡面,每次執行迴圈都旗幟鮮明地告訴黑盒:「我的種子是1」。那麼很顯然:同乙個黑盒,同乙個種子,自然得到的是同乙個隨機數。

第二段**把對種子的設定放在了迴圈外面,他只在第一次迴圈的時候明確地告訴黑盒:「我的種子是2」。那麼也很顯然:從第二次迴圈開始,黑盒用的就是自己生成的新種子了。

多說一句:因為黑盒是始終如一的,所以只要你沒改變種子,那麼你得到的隨機數就不會改變。

沒有特殊需求的話,還是老老實實地用python自動選擇的種子吧,省心又省力。

關於malloc的一點理解

在函式中使用malloc,如果是大的記憶體分配,而且malloc與free的次數也不是特別頻繁,使用malloc與free是比較合適的,但是如果記憶體分配比較小,而且次數特別頻繁,那麼使用malloc與free就有些不太合適了。因為過多的malloc與free容易造成記憶體碎片,致使可使用的堆記憶體...

關於HTTPS的一點理解

通訊使用明文 不加密 內容可能會被竊聽。不驗證通訊方的身份,因此有可能遭遇偽裝。無法證明報文的完整性,所以有可能已經遭到篡改。https http 認證 加密 完整性保護 https是與ssl 安全套接層 組合使用的http協議 http secure 使用ssl之後,請求則變成先和ssl通訊,ss...

關於Action的一點理解

之前學習jsp,就是從網上找些jsp例項 然後模仿,再加工成自己想要的,這樣一來,好多東西都是學了一點皮毛,例如action。下面是在看書時所知道的,看完後,有種頓悟的感覺。action的主要功能是生成頁面顯示所需要的資料,頁面則負責顯示action中的所設定的資料。頁面中的標籤在獲得action所...