0

在我正在运行的模拟中,我必须从同一个 beta 分布中提取许多值。目前,我正在使用

import random

...

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

...

但是,此代码非常慢。我认为这是因为 beta 分布被一遍又一遍地评估,而它只能被评估一次,因为它在模拟过程中不会改变。有没有办法做到这一点?

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 回答