【问题标题】:Difference between functions generating random numbers in numpy在numpy中生成随机数的函数之间的区别
【发布时间】:2015-08-26 02:07:31
【问题描述】:

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

numpy.random.rand()

numpy.random.random()

numpy.random.uniform()

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

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

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

    从均匀分布中抽取样本。
    样本均匀分布在半开区间[low, high)(包括低点,但不包括高点)。换句话说,给定区间内的任何值都同样可能被uniform绘制。

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

    返回半开区间内的随机浮点数[0.0, 1.0)
    结果来自规定区间内的“连续均匀”分布。要对Unif[a, b)b > a 进行采样,乘以 random_sample by (b-a) 的输出并添加 a:
    (b - a) * random_sample() + a

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

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

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

    【讨论】:

    • 附带说明,numpy.random 中的所有函数都填充数组而不是创建单个值(如果未指定形状,则它们返回单个值)。 np.random.randnp.random.random 之间的主要区别在于如何指定数组的形状。 data = np.random.random([10, 10]) 而不是 data = np.random.rand(10, 10)
    【解决方案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)。

    【讨论】:

    • numpy.random.rand 旨在模仿 MATLAB 的 rand 函数,顺便说一句,该函数现在也接受形状作为参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2013-10-14
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多