scipy.stats семя?
Я пытаюсь создать scipy.stats.pareto.rvs(b, loc = 0, scale = 1, size = 1) с разными семенями.
В numpy мы можем использовать numpy.random.seed(seed = 233423).
Есть ли способ засеять случайное число, генерируемое scipy stats.
Примечание. Я не использую numpy pareto, потому что хочу дать разные значения для масштаба.
Ответы
Ответ 1
scipy.stats
просто использует numpy.random
для генерации своих случайных чисел, поэтому numpy.random.seed()
будет работать здесь. Например,
import numpy as np
from scipy.stats import pareto
b = 0.9
np.random.seed(seed=233423)
print pareto.rvs(b, loc=0, scale=1, size=5)
np.random.seed(seed=233423)
print pareto.rvs(b, loc=0, scale=1, size=5)
будет печатать [ 9.7758784 10.78405752 4.19704602 1.19256849 1.02750628]
дважды.
Ответ 2
Для тех, кто случился на этом посту четыре года спустя, Scipy DOES предоставляют способ передать объект np.random.RandomState
в его случайные переменные классы, см. Rv_continuous и rv_discrete для получения более подробной информации. В скудной документации сказано следующее:
seed: None или int или numpy.random.RandomState, необязательный
Этот параметр определяет объект RandomState, используемый для рисования случайных вариаций. Если None (или np.random), используется глобальное состояние np.random. Если целое число, оно используется для семя локального экземпляра RandomState. Значение по умолчанию: None.
К сожалению, похоже, что этот аргумент недоступен после непрерывного/дискретного подкласса rv_continuous
или rv_discrete
. Однако свойство random_state
принадлежит к подклассу, то есть мы можем установить семя, используя экземпляр np.random.RandomState
после создания экземпляра так:
import numpy as np
import scipy.stats as stats
alpha_rv = stats.alpha(3.57)
alpha_rv.random_state = np.random.RandomState(seed=342423)