如何从两个范围中获取一个随机浮点数(python)

时间:2017-01-22 14:49:16

标签: python random colors floating-point range

我需要在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))

如果有人可以提供帮助......!

2 个答案:

答案 0 :(得分:4)

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

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)

答案 1 :(得分:3)

0 < n < 0.4中创建一个随机数,并将该时间间隔的上半部分映射到您想要的范围。

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