Как оценить бета-дистрибутив только один раз в 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
Другие вопросы по тегам