【问题标题】:sampling random floats on a range in numpy在 numpy 的范围内采样随机浮点数
【发布时间】:2012-08-06 02:34:47
【问题描述】:

如何在 numpy 的区间 [a, b] 上对随机浮点数进行采样?不仅仅是整数,而是任何实数。例如,

random_float(5, 10)

将返回[5, 10] 之间的随机数。谢谢。

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    uniform distribution 可能会满足您的要求。

    np.random.uniform(5,10) # A single value
    np.random.uniform(5,10,[2,3]) # A 2x3 array
    

    【讨论】:

      【解决方案2】:

      如果没有 numpy,你可以使用 random 模块来做到这一点。

      import random
      random.random()*5 + 10
      

      将返回 10-15 范围内的数字,作为函数:

      >>> import random
      >>> def random_float(low, high):
      ...     return random.random()*(high-low) + low
      ...
      >>> random_float(5,10)
      9.3199502283292208
      >>> random_float(5,10)
      7.8762002129171185
      >>> random_float(5,10)
      8.0522023132650808
      

      random.random() 返回一个从 0 到 1 的浮点数(不包括上限)。将其乘以一个数字会使其范围更大。 ex random.random()*5 返回从 0 到 5 的数字。向此添加数字提供了一个下限。 random.random()*5 +10 返回从 10 到 15 的数字。我不确定您为什么要使用 numpy 来完成此操作,但也许我误解了您的意图。

      【讨论】:

        【解决方案3】:
        import numpy as np
        >>> 5 + np.random.sample(10) * 5
        array([ 7.14292096,  6.84837089,  6.38203972,  8.80365208,  9.06627847,
                5.69871186,  6.37734538,  9.60618347,  9.34319843,  8.63550653]) 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-25
          • 2020-10-05
          相关资源
          最近更新 更多