0

私が実行しているシミュレーションでは、同じベータ分布から多くの値を引き出す必要があります。現在、私は使用しています

import random

...

for i in range(n_Aa):
   h = random.betavariate(a, b) // With some values for 'a' and 'b'

...

ただし、このコードは非常に遅いです。シミュレーションの過程で変化しないため、一度評価すればよいのに、ベータ分布を何度も評価しているためだと思います。これを達成する方法はありますか?

4

1 に答える 1

3

numpy の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
于 2016-07-06T16:37:23.767 に答える