Numpy随机数 - 一次性或反复呼叫?

Ann*_*nne 0 python random numpy

我需要在[0,1]中计算类似10 ^ 8个均匀分布的数字,用于蒙特卡罗模拟.我可以看到两种方法来获取这些 - 计算我需要的所有随机数,例如通过使用

numpy.random.random_sample(however_many_I_need)
Run Code Online (Sandbox Code Playgroud)

或反复打电话

numpy.random.random_sample()
Run Code Online (Sandbox Code Playgroud)

两种方法之间的随机数的速度或质量是否有任何差异?

dan*_*van 5

为什么不及时看看呢?

import timeit
timeit.timeit("np.random.random_sample()", 
              setup="import numpy as np", 
              number=int(1E8))
Run Code Online (Sandbox Code Playgroud)

14.27977508635054

timeit.timeit("np.random.random_sample(int(1E8))", 
              setup="import numpy as np", 
              number=1)
Run Code Online (Sandbox Code Playgroud)

1.4685100695671025

至于质量,两种结果都是伪随机的 - 它们来自同一台发电机.如果你需要更安全的东西,可能值得在其他地方寻找,但如果这是一个简单的蒙特卡罗问题,我认为你真的不需要.

PS timeit很棒