从均匀分布生成随机数的最快方法python
问题描述:
我需要从均匀分布生成大量(100万)个随机数。我做了一些实验从生成均匀分布60K随机数超过[0-999]
使用从均匀分布生成随机数的最快方法python
scipy.stats.randint(0,1000).rvs(60000)
,并花了〜0.6秒。然后我尝试同样的事情,使用升压库
boost::random::uniform_int_distribution
,花了0.25秒〜。所以我的问题是 - 有没有更好的方式来做我想用Python(库)做的事情?任何建议,非常感谢。谢谢。
答
使用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)。
答
在我看来,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)