看來我對Numpy隨機方法和函式還不夠了解。從未見過像這個簡單示例中那樣鏈接到函式的方法:
seed(4)
randint(0,10,10)
...在哪里seed()被稱為randint()
我想知道:
- 為什么種子不是
randint作為關鍵字引數的函式的一部分? - 這種創建
Nupy函式的方式背后的想法是什么?
uj5u.com熱心網友回復:
種子旨在確定一系列RNG 結果。像這樣:
In [1]: import numpy
In [2]: numpy.random.seed(4)
In [3]: numpy.random.randint(0, 10, 10)
Out[3]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [4]: numpy.random.randint(0, 10, 10)
Out[4]: array([7, 9, 8, 4, 2, 6, 4, 3, 0, 7])
In [5]: numpy.random.randint(0, 10, 10)
Out[5]: array([5, 5, 9, 6, 6, 8, 2, 5, 8, 1])
In [6]: numpy.random.randint(0, 10, 10)
Out[6]: array([2, 7, 0, 8, 3, 1, 0, 3, 2, 3])
In [7]: numpy.random.seed(4)
In [8]: numpy.random.randint(0, 10, 10)
Out[8]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [9]: numpy.random.randint(0, 10, 10)
Out[9]: array([7, 9, 8, 4, 2, 6, 4, 3, 0, 7])
In [10]: numpy.random.randint(0, 10, 10)
Out[10]: array([5, 5, 9, 6, 6, 8, 2, 5, 8, 1])
In [11]: numpy.random.randint(0, 10, 10)
Out[11]: array([2, 7, 0, 8, 3, 1, 0, 3, 2, 3])
看到第二次seed呼叫(在線In [7])后,序列如何重置?
當您設定種子時,RNG 輸出仍然具有相同的統計屬性,但您可以使用相同的種子再次運行程式并獲得相同的結果。這對于除錯或可重現的模擬等非常有用。
如果seed是 的一部分randint,則每次都會重置序列。它看起來像這樣:
In [12]: numpy.random.seed(4)
In [13]: numpy.random.randint(0, 10, 10)
Out[13]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [14]: numpy.random.seed(4)
In [15]: numpy.random.randint(0, 10, 10)
Out[15]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [16]: numpy.random.seed(4)
In [17]: numpy.random.randint(0, 10, 10)
Out[17]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [18]: numpy.random.seed(4)
In [19]: numpy.random.randint(0, 10, 10)
Out[19]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
每次呼叫的結果都相同。每次呼叫都產生相同的結果并不是我們希望 RNG 輸出的行為方式。
uj5u.com熱心網友回復:
randint 不是 numpy 中唯一的亂數/序列生成器,還有其他過多的隨機函式,每次將種子傳遞給程式中的不同函式沒有多大意義,相反,您初始化種子狀態一次,然后它是用于所有隨機函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/368876.html
