首页 > 解决方案 > 在 numpy 中生成一个均匀分布的随机数的 NxM 数组(不是 [0,1))

问题描述

我知道 numpy.random.rand() 命令,但是似乎没有任何变量允许您将选择数字的统一间隔调整为 [0,1) 以外的值。

我考虑使用 for 循环,即启动所需大小的零数组,并使用 numpy.random.unifom(a,b,N) 在区间 (a,b) 中生成 N 个随机数,然后将它们放入发起阵列。我不知道这个模块会创建一个任意维度的数组,比如上面的 rand。这显然是不优雅的,尽管您主要关心的是运行时间。我认为这种方法的运行时间比从一开始就使用适当的随机数生成器要长得多。

编辑和额外的想法:我工作的间隔是 [0,pi/8),它小于 1。严格来说,如果我只是重新缩放,我不会影响生成数字的随机性,而是将每个生成的随机数相乘number 显然是额外的计算时间,我推测元素数量的顺序是一个因素。

标签: pythonnumpyrandom

解决方案


np.random.uniform接受低和高:

In [11]: np.random.uniform(-3, 3, 7)  # 7 numbers between -3 and 3
Out[11]: array([ 2.68365104, -0.97817374,  1.92815971, -2.56190434,  2.48954842, -0.16202127, -0.37050593])

推荐阅读