2012-08-14 60 views

回答

4
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

1

只是乘以一些適當的常量,以獲得整數並將結果逆轉操作。

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