1. 程式人生 > 程式設計 >np.random.seed() 的使用詳解

np.random.seed() 的使用詳解

在學習人工智慧時,大量的使用了np.random.seed(),利用隨機數種子,使得每次生成的隨機數相同。

我們帶著2個問題來進行下列實驗

  1. np.random.seed()是否一直有效
  2. np.random.seed(Argument)的引數作用?

例子1

import numpy as np
 
if __name__ == '__main__':
 i = 0
 while (i < 6):
  if (i < 3):
   np.random.seed(0)
   print(np.random.randn(1,5))
  else:
   print(np.random.randn(1,5))
   pass
  i += 1
 
 print("-------------------")
 i = 0
 while (i < 2):
  print(np.random.randn(1,5))
  i += 1
 print(np.random.randn(2,5))
 
 print("---------重置----------")
 np.random.seed(0)
 i = 0
 while (i < 8):
  print(np.random.randn(1,5))
  i += 1

可以看出,np.random.seed()對後面的隨機數一直有效。

兩次利用隨機數種子後,即便是跳出迴圈後,生成隨機數的結果依然是相同的。第一次跳出while迴圈後,進入第二個while迴圈,得到的兩個隨機陣列確實和加了隨機數種子不一樣。但是,後面的加了隨機數種子的,八次迴圈中的結果和前面的結果是一樣的。說明,隨機數種子對後面的結果一直有影響。同時,加了隨機數種子以後,後面的隨機陣列都是按一定的順序生成的。

例子2,隨機數種子引數的作用

import numpy as np
 
if __name__ == '__main__':
 i = 0
 np.random.seed(0)
 while (i < 3):
  print(np.random.randn(1,5))
  i += 1
 i = 0
 print("---------------------")
 np.random.seed(1)
 i = 0
 while (i < 3):
  print(np.random.randn(1,5))
  i += 1

當隨機數種子引數為0和1時,生成的隨機數結果相同。說明該引數指定了一個隨機數生成的起始位置。每個引數對應一個位置。並且在該引數確定後,其後面的隨機數的生成順序也就確定了。

所以,隨機數種子的引數怎麼選擇?這個引數只是確定一下隨機數的起始位置,可隨意分配。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。