如何在Python中使用步骤获得随机浮点数

问题描述:

还在尝试弄清楚在Python中是否有函数来获取随步骤的随机浮点值?类似randrange(开始,停止,步骤),但对于浮点数。如何在Python中使用步骤获得随机浮点数

import random 

def randrange_float(start, stop, step): 
    return random.randint(0, int((stop - start)/step)) * step + start 

randrange_float(2.1, 4.2, 0.3) # returns 2.4 
+0

非常感谢,它的工作原理! – SkyWalker 2012-08-14 10:13:40

+0

使用'int(round(...))'可能比使用'int(...)'安全一点,特别是如果通常情况是'stop-start'接近多个'step'。否则很难预测“停止”是否可能。 – 2012-08-14 13:33:14

只是乘以一些适当的常量,以获得整数并将结果逆转操作。

start = 1.5 
stop = 4.5 
step = 0.3 
precision = 0.1 
f = 1/precision 
random.randrange(start*f, stop*f, step*f)/f