5

有没有比内置函数更快的方法来获得一个充满随机数的 numpy 数组numpy.random.rand(count)?我知道内置的方法是使用 Mersenne Twister。

我想使用 numpy 进行蒙特卡罗模拟,并且获取随机数需要花费大量时间。一个简单的例子,通过蒙特卡洛积分与 200E6 个随机数计算 pi 仅通过我的程序处理大约 116.8 MB/s。使用 xor128() 作为生成器用 C++ 编写的类似程序,处理数百 MB/s。

编辑:计算错误的生成率

4

1 回答 1

3

您可以通过降低准确性来稍微提高性能 - 如果这是可以接受的。我通过使用randint和缩放来做到这一点:

使用 ipython%%timeit

count =1000

numpy.random.rand(count)

10000 loops, best of 3: 24.3us per loop

numpy.random.randint(0,1000,count)*0.001

10000 loops, best of 3: 21.4us per loop
于 2013-11-07T10:49:59.603 回答