7

我想在 min_time 和 m_time 之间生成一个小数点后 1 位的随机数,比如 0.3

现在我有一个非常古怪的解决方案

m_time = 0.5
min_time = 0.2
float(randint(int(min_time * 10), int(m_time * 10))) / 10

它有效,但我想知道是否有更好的解决方案?

4

3 回答 3

7

我认为首选的方法是在和之间统一选择一个浮点数,然后使用内置的入函数(到小数点后一位):min_timemax_time

round(random.uniform(min_time, max_time), 1)
于 2012-10-06T09:20:29.100 回答
6
import decimal
import random

-- i 和 j 像 2 和 3 一样属于你的极限

decimal.Decimal('%d.%d' % (random.randint(0,i),random.randint(0,j)))
于 2012-10-06T05:29:29.553 回答
2

我认为你所拥有的还不错。虽然你也可以这样写

0.1*randint(int(min_time * 10), int(m_time * 10))

另一个明显的选择是

round(random.random()*(m_time-min_time)+min_time, 1)
于 2012-10-06T05:15:48.990 回答