Как оценить бета-дистрибутив только один раз в Python?
В симуляции, которую я запускаю, мне нужно извлечь много значений из одного и того же бета-дистрибутива. В настоящее время я использую
import random
...
for i in range(n_Aa):
h = random.betavariate(a, b) // With some values for 'a' and 'b'
...
Этот код, однако, очень медленный. Я думаю, что это потому, что бета-распределение оценивается снова и снова, когда его можно было бы оценить только один раз, поскольку оно не меняется в течение моделирования. Есть ли способ достичь этого?
1 ответ
Вы можете попробовать Nummy 's random.beta. Кажется, это намного быстрее:
import random
import numpy as np
n = 10**6
%timeit [random.betavariate(2, 3) for _ in range(n)]
1 loop, best of 3: 3.83 s per loop
%timeit np.random.beta(2, 3, n)
10 loops, best of 3: 99.7 ms per loop