7

0.3 のように、min_time と m_time の間に小数点以下 1 桁の乱数を生成したい

今、私は本当に風変わりな解決策を持っています

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

それは機能しますが、より良い解決策があるかどうか疑問に思っていますか?

4

3 に答える 3

7

好ましい方法は、 と の間の浮動小数点数を均一に選択し組み込みのround関数を使用することです (小数点以下第 1 位まで)。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 に答える