如何从范围获取随机小数号



我正在寻找一种在某些范围内生成随机Decimal的方法。例如 -

>>> random.choice(range(Decimal(1.55,3.89)))
>>> 1.89

可以随机做到这一点吗?我想保留2个小数点。

random.choice(range(Decimal(1.55,3.89))) 

返回>>> 0

您可以这样使用random.randrange()

import random
import decimal
decimal.Decimal(random.randrange(155, 389))/100

然后使用float()获取所需的输出:

>>> float(decimal.Decimal(random.randrange(155, 389))/100)
3.14
>>> float(decimal.Decimal(random.randrange(155, 389))/100)
1.91

@jsbueno在评论中提到,您可以在格式的字符串中使用生成的数字而无需将它们转换为floats:

>>> '{}'.format(decimal.Decimal(random.randrange(155, 389))/100)
'3.85'

您可能需要仅使用float(),如下所示:

>>> float(random.randrange(155, 389))/100
2.38
>>> float(random.randrange(155, 389))/100
3.72

注意:

random.randrange(155, 389)中, 155包含在该范围内,但是389不是,如果要包括389,则应使用random.randrange(155, 390)。@mhawke在下面的评论中提到了这一点。

您可以在100倍的范围内生成整数,然后除以100。可以节省进口小数,而您不必像您那样削减重要数字带有浮子。

>>> import random
>>> random_decimal = random.randint(155, 389)/100
>>> print(random_decimal)
2.12

或输出更多值:

>>> for i in range(10):
>>>    print(random.randint(155, 389)/100)
2.69
3.84
3.53
3.87
1.56
2.12
2.7
2.4
3.31
3.28

最新更新