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

时间:2013-11-07 08:03:55

标签: python random numpy montecarlo

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

我想使用numpy进行蒙特卡罗模拟,并且获取随机数是占用了大部分时间。一个简单的例子,通过monte carlo与200E6随机数进行积分计算pi只能通过我的程序处理大约116.8 MB / s。使用xor128()作为生成器以C ++编写的可编译程序处理数百MB / s。

编辑:计算的生成率

1 个答案:

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