Я знаю, що, щоб засіяти випадковість numpy.random і мати можливість її відтворити, я повинен:
import numpy as np
np.random.seed(1234)
але що робить
np.random.RandomState()
?
Я знаю, що, щоб засіяти випадковість numpy.random і мати можливість її відтворити, я повинен:
import numpy as np
np.random.seed(1234)
але що робить
np.random.RandomState()
?
Відповіді:
Якщо ви хочете встановити насіння, яке np.random...
буде використовувати дзвінки , використовуйте np.random.seed
:
np.random.seed(1234)
np.random.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
np.random.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
Використовуйте клас, щоб уникнути впливу глобального стану numpy:
r = np.random.RandomState(1234)
r.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
І підтримує стан так само, як і раніше:
r.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
Ви можете побачити стан типу "глобального" класу за допомогою:
np.random.get_state()
та вашого власного екземпляра класу з:
r.get_state()
This method is called when RandomState is initialized. It can be called again to re-seed the generator.
Це нічого не говорить про те, що коли я викликаю цей метод, я впливаю лише на один глобальний екземпляр (або що завгодно), а не на будь-який інший RandomState
екземпляр.
numpy.random
Документація модуля повинна чітко зазначати, що модуль ініціалізується фактично екземпляром RandomState
. Але я не можу знайти жодної документації щодо самого модуля.
np.random.RandomState()
будує генератор випадкових чисел. Він не впливає на окремо стоячі функції в np.random
, але повинен використовуватися явно:
>>> rng = np.random.RandomState(42)
>>> rng.randn(4)
array([ 0.49671415, -0.1382643 , 0.64768854, 1.52302986])
>>> rng2 = np.random.RandomState(42)
>>> rng2.randn(4)
array([ 0.49671415, -0.1382643 , 0.64768854, 1.52302986])
random.seed - це метод заповнення контейнера random.RandomState .
з numpy docs:
numpy.random.seed(seed=None)
Посів генератор.
Цей метод викликається при ініціалізації RandomState. Його можна знову викликати для повторного засівання генератора. Детальніше див. У розділі RandomState.
class numpy.random.RandomState
Контейнер для генератора псевдовипадкових чисел Mersenne Twister.
np.random.RandomState () - клас, який надає кілька методів, заснованих на різних розподілах ймовірностей.
np.random.RandomState.seed () - викликається при ініціалізації RandomState ().