在我正在运行的模拟中,我必须从同一个 beta 分布中提取许多值。目前,我正在使用
import random
...
for i in range(n_Aa):
h = random.betavariate(a, b) // With some values for 'a' and 'b'
...
但是,此代码非常慢。我认为这是因为 beta 分布被一遍又一遍地评估,而它只能被评估一次,因为它在模拟过程中不会改变。有没有办法做到这一点?
在我正在运行的模拟中,我必须从同一个 beta 分布中提取许多值。目前,我正在使用
import random
...
for i in range(n_Aa):
h = random.betavariate(a, b) // With some values for 'a' and 'b'
...
但是,此代码非常慢。我认为这是因为 beta 分布被一遍又一遍地评估,而它只能被评估一次,因为它在模拟过程中不会改变。有没有办法做到这一点?
你可以试试 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