python

2017-04-01 55 views
0

rand('state',sum(100 * clock))的等價物我對python不是很熟悉。我尋覓了很多,我想下面的線正好傳遞到Python:python

% MATLAB code 
rand('state',sum(100*clock)) 

我知道,我應該使用np.random.seed()np.random.RandomState()

,但我沒能如何選擇和使用它們有完全相同相當於。謝謝

+0

爲什麼假設有一個確切的等值?除非底層的隨機數生成器的實現完全相同,否則就像是要求一個與橙色完全相同的蘋果。 numpy的播種方式有什麼問題?你看起來有點含糊?請注意,它會自動播種,無需做任何事情。 –

+0

這可能有所幫助:http://stackoverflow.com/a/40808941/4996248 –

+0

非常感謝,我知道我們不應該使用確切的等價物,但我不知道如何使用np.random.seed()和np .random.RandomState()使這個意思。所以你的意思只是使用np.random.seed()就夠了?我們不應該定義狀態? – zeinab

回答

0

在Python中你不需要這樣的事情。與默認使用相同的固定隨機種子的MATLAB不同,Python每次都會自動設置一個新的隨機種子,可以通過系統提供的隨機性或取決於平臺的系統時鐘。如果您想每次使用相同的種子,只需手動設置種子。這是包括在documentation:

random.seed(A =無,版本= 2) 如果省略或無,則使用當前系統時間。如果操作系統提供隨機源,則使用它們而不是系統時間(有關可用性的詳細信息,請參閱os.urandom()函數)。

如果你想手動復位種子到一個新的隨機值(你只需要做,如果您以前將其設置爲一個固定值),你可以這樣做:

>>> import random 
>>> 
>>> random.seed() 

或者對於numpy:

>>> import numpy as np 
>>> 
>>> np.random.seed()