我需要获取封闭时间间隔[0,1]之间而不是开放时间间隔之间的躯体随机值。有什么办法可以做到?
可以吗?
答案 0 :(得分:0)
首先,尝试:import random
(random.randint(0,10**6)*1.0 /10**6)
这将为您提供完整的浮点精度。
否则,请尝试:
导入十进制
def randfloat():
decimal.getcontext().prec = 10 # 10 decimal points enough?!
return decimal.Decimal(0) + decimal.Decimal(random.uniform(0, 1))
# this should include both boundaries as float gets close enough to 1 to make decimal round
>>> decimal.Decimal(0) + decimal.Decimal(0.99999999999)
Decimal('1.000000000')
而Uniform()显然可以保证包含下边界
答案 1 :(得分:0)
您可以使用:
random.uniform(0, 1)
注意:调用N = random.uniform(a, b)
时,行为始终是a <= N <= b
,但端点值b
可能会也可能不包括在范围内,具体取决于浮点舍入。
请参见https://docs.python.org/3/library/random.html?highlight=uniform#random.uniform