2017-09-27 191 views
1

我需要從均勻分佈生成大量(100萬)個隨機數。我做了一些實驗從生成均勻分佈60K隨機數超過[0-999]使用從均勻分佈生成隨機數的最快方法python

scipy.stats.randint(0,1000).rvs(60000) 

,並花了〜0.6秒。然後我嘗試同樣的事情,使用升壓庫

boost::random::uniform_int_distribution

,花了0.25秒〜。所以我的問題是 - 有沒有更好的方式來做我想用Python(庫)做的事情?任何建議,非常感謝。謝謝。

回答

3

使用numpy.random.randint

numpy.random.randint(low=1, high=1001, size=60000) 

在我的考驗,這比運行速度scipy.stats.randint約300倍,這是更多地用於一般性比速度的系統的一部分。 (另外,scipy.stats.randint(0,1000).rvs(60000)正在生成0到999之間的整數,而不是1到1000)。

3

在我看來,numpy.random.randint顯着更快。

%timeit scipy.stats.randint(0,1000).rvs(60000) 
59.6 ms ± 956 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) 

%timeit np.random.randint(0, 1000, 60000) 
202 µs ± 1.67 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)