用随机数填充 numpy 数组的最快方法

che*_*cks 5 python random numpy montecarlo

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

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

编辑:错误计算的发电率

ato*_*3ls 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
Run Code Online (Sandbox Code Playgroud)