【问题标题】:Fastest way to generate random number from uniform distribtution python从均匀分布python生成随机数的最快方法
【发布时间】:2017-09-27 17:47:27
【问题描述】:

我需要从均匀分布中生成大量(100 万)个随机数。我做了一些实验,使用在[0-999] 上的均匀分布生成 60K 随机数

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

它花了大约 0.6 秒。然后我使用 boost 库尝试了同样的事情

boost::random::uniform_int_distribution

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

【问题讨论】:

    标签: python random boost scipy


    【解决方案1】:

    使用numpy.random.randint:

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

    在我的试验中,它的运行速度比 scipy.stats.randint 快了大约 300 倍,scipy.stats.randint 是一个系统的一部分,它的设计目的是为了通用性而不是速度。 (另外,scipy.stats.randint(0,1000).rvs(60000) 生成的整数是从 0 到 999,而不是从 1 到 1000。)

    【讨论】:

      【解决方案2】:

      在我看来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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-09
        • 2013-07-22
        • 1970-01-01
        • 2012-09-18
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 2018-10-04
        相关资源
        最近更新 更多