从统一分布式python中生成随机数的最快方法

时间:2017-09-27 17:47:27

标签: python random boost scipy

我需要从均匀分布中生成大量(1百万)个随机数。我做了一些实验,使用

[0-999]上通过均匀分布生成60K随机数
scipy.stats.randint(0,1000).rvs(60000)

花了大约0.6秒。然后我尝试使用boost库

boost::random::uniform_int_distribution

花费了大约0.25秒。所以我的问题是 - 有没有更好的方法来做我想用python(库)做的事情?任何建议都非常感谢。感谢。

2 个答案:

答案 0 :(得分:3)

使用numpy.random.randint

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

在我的试验中,它的运行速度比scipy.stats.randint快约300倍,scipy.stats.randint(0,1000).rvs(60000)是系统的一部分,其设计更多的是通用性而不是速度。 (另外,mysql> CREATE TABLE `tempTable` AS SELECT `columnYouWant` from `table`; $> mysqldump yourDB tempTable > temp.sql 生成的整数从0到999,而不是1到1000。)

答案 1 :(得分: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)