【问题标题】:Generating a random number between two values from an array in Python [closed]在Python中的数组中生成两个值之间的随机数[关闭]
【发布时间】:2014-12-05 17:36:37
【问题描述】:

假设我有一个非整数值的单列浮点数组:

数据 = [1.1; 1.2; 1.3; 1.4; 1.5]

我想在这个数组中的两个连续值之间生成随机数,并将这些值存储在一个新数组中。即新数组中的第一个值将是 1.1 和 1.2 之间的随机数,下一个随机数在 1.2 和 1.3 之间等等。

我正在寻找一个新的数组,比如 data_rand = [1.15 ; 1.24; 1.37; 1.46] 基于原始数据数组。

我的问题是(我将如何/最好的方法是)遍历数组中的所有值并在数组中每个后续数字对之间生成一个非整数随机数,将这些随机数保存到一个新数组?有人可以提供一个基于这个小的 5 值数据数组的例子吗?或者在流程的每个阶段为我指明正确的方向。

【问题讨论】:

  • 这不是 Python - 你的意思是 list,比如 [1.1, 1.2, 1.3]?到目前为止,您尝试了什么,它到底有什么问题?

标签: python arrays loops random


【解决方案1】:

要获得ab 之间的随机值,可以在01 之间添加一个random 值,乘以ab 之间的绝对差值, ab 中的较小者。

要轻松获取列表中的项目对,您可以使用zip 和切片:

>>> l = [1, 2, 3]
>>> zip(l, l[1:])
[(1, 2), (2, 3)]

除此之外,我建议你自己去。

【讨论】:

    【解决方案2】:
    import random    
    rand_data = map(random.uniform, data[:-1], data[1:])
    

    random.uniform(a, b) 给你一个介于ab 之间的随机浮点数。您可以将此函数映射到列表的两个切片(第一个切片删除最后一个元素,第二个切片删除第一个元素)。因此,在您的示例中,两个切片将如下所示:[1.1, 1.2, 1.3, 1.4][1.2, 1.3, 1.4, 1.5]

    【讨论】:

      【解决方案3】:
      import random
      
      results = []
      l = [1.1, 1.2, 1.3, 1.4, 1.5]
      
      for x in zip(l, l[1:]):
        x = list(int(y * 100) for y in x)
        results.append(float(random.randrange(x[0], x[1])) / 100)
      

      这里我乘/除以 100,因为我想要 2 个小数,用 10 作为 1 个小数。

      输出:

      结果

      [1.14, 1.22, 1.37, 1.44]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-13
        • 2014-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多