【问题标题】:How to get one random float number from two ranges (python)如何从两个范围中获取一个随机浮点数(python)
【发布时间】:2017-01-22 14:49:16
【问题描述】:

我需要在python中选择两个范围内的随机浮点数:

0. < n < 0.2  or  0.8 < n < 1.

现在我只有一个范围:

random.uniform(0, 0.2)

整行(我正在映射暖色 hsv 值):

couleur = hsv2rgb(random.uniform(0, 0.2), 1, 1))

如果有人可以帮忙...!

【问题讨论】:

  • 通过获取单个范围(例如 [0; 0.4])并将其映射到所需的范围?
  • 需要从on或者其他

标签: python random colors floating-point range


【解决方案1】:

您可以在区间之间进行加权选择:

from numpy import random

def uniform_two(a1, a2, b1, b2):
    # Calc weight for each range
    delta_a = a2 - a1
    delta_b = b2 - b1
    if random.rand() < delta_a / (delta_a + delta_b):
        return random.uniform(a1, a2)
    else:
        return random.uniform(b1, b2)

print uniform_two(0, 0.2, 0.8, 1)

【讨论】:

    【解决方案2】:

    在0 &lt; n &lt; 0.4 中创建一个随机数,并将该区间的上半部分映射到您想要的范围。

    nbr = random.uniform(0, 0.4)
    if nbr >= 0.2:
        nbr += 0.6
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-24
      • 2011-08-30
      • 1970-01-01
      • 2014-01-14
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多