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)