2017-09-27 85 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)