在numpy中生成随机数的函数之间的差异

时间:2015-06-10 17:03:20

标签: python numpy random

我试图了解这些功能之间的区别(如果有的话):

numpy.random.rand()

numpy.random.random()

numpy.random.uniform()

他们似乎从均匀分布中产生随机样本。那么,在函数中没有任何参数,有什么区别吗?

2 个答案:

答案 0 :(得分:4)

numpy.random.uniform(low=0.0, high=1.0, size=None) - 来自任意范围的统一样本

  

从均匀分布中抽取样本   样本在半开区间[low, high)上均匀分布(包括低,但不包括高)。换句话说,给定间隔内的任何值都可以通过统一绘制。

numpy.random.random(size=None) - 0到1之间的均匀分布

  

在半开区间[0.0, 1.0)中返回随机浮点数   结果来自所述间隔的“连续均匀”分布。要抽样Unif[a, b)b > a乘以random_sample by(b-a)的输出并添加:
  (b - a) * random_sample() + a

numpy.random.rand(d0, d1, ..., dn) - 来自均匀分布的样本以填充给定形状的数组

  

给定形状的随机值。
  创建给定形状的数组,并使用来自[0, 1)上的均匀分布的随机样本进行传播。

要回答您的其他问题,在给定所有默认参数的情况下,所有函数numpy.random.uniformnumpy.random.randomnumpy.random.rand都是相同的。

答案 1 :(得分:2)

简短回答

没有参数,这三个函数是等价的,产生[0.0,1.0]范围内的随机浮点数。

详细

numpy.random.rand是一个便利函数,它接受任意数量的参数作为维度。它与其他numpy.random函数,numpy.zerosnumpy.ones的不同之处在于,所有其他函数都接受形状,即N元组(指定为Python列表或元组) )。以下两行产生相同的结果(尽管随机种子):

import numpy as np
x = np.random.random_sample((1,2,3)) # a single tuple as parameter
x = np.random.rand(1,2,3) # integers as parameters

numpy.random.randomnumpy.random.random_sample的别名。

numpy.random.uniform允许您使用lowhigh关键字参数指定分布限制,而不是使用默认值[0.0,1.0]。