【发布时间】:2019-06-22 13:28:52
【问题描述】:
我正在尝试快速生成一堆随机数来进行 MCMC。
我有以下基准:
@njit
def getRandos(n):
for i in prange(n):
a = np.random.rand()
%timeit np.random.rand(1000000000)
13.1 s ± 287 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit getRandos(1000000000)
1.97 s ± 25.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
显然,并行化改善了我的运行时间。但是,我不知道随机数生成的播种是如何工作的。如何确保这些数字是真正随机的?我必须以某种方式随机选择种子吗?
【问题讨论】:
-
为什么需要随机种子?种子是您的控制旋钮
-
我正在并行化它,我想确保每个线程都返回真正的随机数
-
在 numpy 或 numba 中都没有真正的随机数 - 它们都是伪随机数生成器。通过控制种子,您应确保线程随机数序列之间不重叠
标签: python python-3.x numpy random numba