当前位置: 首页 > 知识库问答 >
问题:

在一个范围内生成随机的浮点数组

桂德义
2023-03-14

我还没有找到一个函数来生成给定长度的随机浮点数数组。

我已经看过随机抽样,但似乎没有函数可以满足我的需求。

random.uniform很接近,但它只返回一个元素,而不是一个特定的数字。

这就是我所追求的:

ran_floats = some_function(low=0.5, high=13.3, size=50)

这将返回一个由50个随机非唯一浮点数(即:允许重复)组成的数组,这些浮点数均匀分布在[0.5,13.3]范围内。

有这样的功能吗

共有3个答案

韦鸣
2023-03-14

可能已经有一个函数可以做你正在寻找的事情,但是我还不知道它(还没有?).同时,我建议使用:

ran_floats = numpy.random.rand(50) * (13.3-0.5) + 0.5

这将产生一个形状(50,)的阵列,其均匀分布在0.5和13.3之间。

您还可以定义一个函数:

def random_uniform_range(shape=[1,],low=0,high=1):
    """
    Random uniform range

    Produces a random uniform distribution of specified shape, with arbitrary max and
    min values. Default shape is [1], and default range is [0,1].
    """
    return numpy.random.rand(shape) * (high - min) + min

编辑:嗯,是的,所以我错过了,有numpy.random.uniform()和你想要的完全一样!尝试import numpy; help(numpy.random.uniform)获取更多信息。

邓开济
2023-03-14

为什么不使用列表理解?

在Python 2中

ran_floats = [random.uniform(low,high) for _ in xrange(size)]

在Python 3中,range的工作方式类似于xrange(ref)

ran_floats = [random.uniform(low,high) for _ in range(size)]
萧渝
2023-03-14

< code>np.random.uniform适合您的使用情况:

sampl = np.random.uniform(low=0.5, high=13.3, size=(50,))

2019年10月更新:

虽然语法仍然受支持,但看起来API在NumPy 1.17中发生了变化,以支持对随机数生成器的更大控制。展望未来,API已经发生了变化,您应该看看 https://docs.scipy.org/doc/numpy/reference/random/generated/numpy.random.Generator.uniform.html

增强建议在这里:https://numpy.org/neps/nep-0019-rng-policy.html

 类似资料:
  • 问题内容: 我还没有找到一个函数来生成在一定范围内给定长度的随机浮点数组。 我看过随机抽样,但是似乎没有函数可以满足我的需要。 random.uniform接近,但它仅返回单个元素,而不返回特定数字。 这就是我所追求的: 这将返回在range中均匀分布的50个随机非唯一浮点数(即允许重复)的数组。 有这样的功能吗? 问题答案: 适合您的用例: 2019年10月更新: 虽然仍支持语法,但看起来API

  • 问题内容: 我知道如何在Python范围内生成随机数。 我知道我可以将其循环生成n个数量的这些数字 但是,我需要确保该列表中的每个数字都是唯一的。除了大量的条件语句之外,还有一种直接的方法可以生成n个唯一的随机数吗? 重要的是列表中的每个数字都不同。 所以 [12,5,6,1] =好 但 [12,5,5,1] =不好,因为数字5出现两次。 问题答案: 如果您只需要采样而无需更换: random.s

  • 问题内容: 如何在numpy中以[a,b]间隔采样随机浮点数?不仅是整数,而且是任何实数。例如, 将在之间返回随机数。谢谢。 问题答案: 该均匀分布可能会做你的要求。

  • 返回指定范围内的一个随机数。 使用 Math.random() 生成一个随机值,使用乘法将其映射到所需的范围。 const randomNumberInRange = (min, max) => Math.random() * (max - min) + min; randomNumberInRange(2, 10); // 6.0211363285087005

  • 问题内容: 我需要生成一个范围内的随机唯一数字吗?怎么做 ? 我可以通过生成随机数 我知道这段代码不好,所以我需要一个更好的优化版本代码!帮帮我 ! 例如:如果我需要在1到15之间生成3个数字,它们应该像5、9、1而不是3,1,2 [具有1-3(我要生成的数字)] 问题答案: 以随机顺序排列数字范围的数组: 包装功能: 例: 结果:

  • 编者注:此代码示例来自Rust 1.0之前的版本,在语法上不是有效的Rust 1.0代码。此代码的更新版本会产生不同的错误,但答案仍然包含有价值的信息。 我遇到了下面的例子,说明了如何使用Rust生成一个随机数,但它似乎不起作用。这个例子没有显示它适用于哪个版本的Rust,所以可能它已经过时了,或者可能我搞错了什么。 当我试图编译此文件时,会出现以下错误: 在同一页(上面)上还有另一个例子(如下所