np.random.seed()随机数种子
np.random.seed()隨機數種子
- np.random.seed()隨機數種子
- 1.隨機數種子的理解
- 2.np.random.seed()的參數
np.random.seed()隨機數種子
隨機數種子!以下均為個人理解,有誤及時修改
在生成隨機數時,我們可以利用隨機數種子,控制生成的隨機數。什么意思,就是說我可以利用隨機數種子,得到相同的或部分形同的隨機數。
1.隨機數種子的理解
隨機數種子,相當于我給接下來需要生成的隨機數一個初值,按照我給的這個初值,按固定順序生成隨機數。
個人覺得通俗理解: 隨機數種子是給了一批數(隨機數種子應該是按一定順序生成隨機數的,并不是一次給了一批數,但如果這些數有固定順序,我們是不是可以簡單認為隨機種子給了我們很多數據),當需要生成隨機數時,就從這一批數中依次取值。
看例子吧:
(1)
在代碼中,我們看到 “ 隨機 ” ,那就是說并不是真正隨機(假隨機),觀察結果就知道了!
# 結果 [0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ] [0.64589411 0.43758721 0.891773 0.96366276 0.38344152]0.5488135039273248 0.7151893663724195 0.6027633760716439 0.5448831829968969 0.4236547993389047 0.6458941130666561 0.4375872112626925觀察結果:下邊的 ‘ 隨機 ’ 生成的7個數和上邊 ‘ 隨機 ’ 生成的十個數中的前7個相同。
為什么呢?
因為開始我們設置了一個隨機種子,接下來生成的十個數是有固定順序的(這順序是什么?i dont know!)。為了方便理解,我們把隨機種子看成一個超級超級長的 list ,我們接下來的取隨機數操作,( np.random.rand(5) )就是從這個 list 中依次取5個隨機數,然后( np.random.rand(5) )再取5個隨機數。當然,你說它不是 list 是 數組 ,OK!隨你,只是為了方便理解。
為什么后邊生成的7個 “隨機” 數和之前的前7個數相同呢?
這是因為在生成這7個 ‘隨機’ 數之前,又重新定義了一個隨機數種子 ( np.random.seed(0) )。定義隨機數種子,不就是定義了一個超級超級長的 list 嗎 ?,這個 list 和之前的 list 是一樣的!!!,所以我們取7個 ‘隨機’ 數,不就是這個 list 中的前7個嗎!
(2)再來看一個例子
np.random.seed(0) for i in range(7):print(np.random.random())np.random.seed(0) print(np.random.rand(2, 3))放結果,觀察
0.5488135039273248 0.7151893663724195 0.6027633760716439 0.5448831829968969 0.4236547993389047 0.6458941130666561 0.4375872112626925[[0.5488135 0.71518937 0.60276338][0.54488318 0.4236548 0.64589411]]2x3矩陣的6個數 和 隨機生成的前6個數相同!不需要解釋了吧,所以如果我想生成兩個一樣的隨機矩陣怎么辦?是不是在生成矩陣前,定義隨機數種子就好了。
總結:
(1)隨機數種子相當于給我們一個初值,之后按照固定順序生成隨機數(也就是我們說的超級長的 list )
(2)隨機數種子對后面的結果一直有影響,在一個隨機數種子后生成的隨機數都受這個隨機數種子的影響,即生成的隨機數都是由這個隨機數種子給的初值,按照固定順序生成的(生成的隨機數受離它最近的隨機數種子影響,即它之前的隨機數種子)。
那么問題來了,隨機數種子的初值和順序由啥決定呢?下一小節!
2.np.random.seed()的參數
個人理解:隨機數種子給的初值和順序是一個意思,因為這個順序并不知道,所以可以認為是由初值決定,也可以理解為生成的超級超級大的 list 。
那這個初值是怎么決定的呢,是np.random.seed()中的參數決定,只要每次這個參數相同,那我們的初值就是相同的,種子就是相同的。
種子相同,之后長得枝條就是相同的: 即 list 是相同的。
(1)是第一小節的例子,np.random.seed(0) ,參數都是 0 。
(2)
np.random.seed(0) print(np.random.rand(2, 3))np.random.seed(1) print(np.random.rand(2, 3))np.random.seed(0) print(np.random.rand(2, 3))結果:這個例子也證實了上一小節的總結(2)
[[0.5488135 0.71518937 0.60276338][0.54488318 0.4236548 0.64589411]][[4.17022005e-01 7.20324493e-01 1.14374817e-04][3.02332573e-01 1.46755891e-01 9.23385948e-02]][[0.5488135 0.71518937 0.60276338][0.54488318 0.4236548 0.64589411]]最后!!!,這個參數好像是隨便取的,可以認為是初值的標志,每次按照這個標志都可以得到相同的初值。但是這個參數好像必須是int類型吧。
總結
以上是生活随笔為你收集整理的np.random.seed()随机数种子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用光盘安装服务器系统教程,光盘、硬盘
- 下一篇: 云服务(腾讯云)的安全防范措施