Ich möchte eine Zufallszahl mit 1 Dezimalpunkt zwischen min_time und m_time erzeugen, wie z. B. 0,3

Jetzt habe ich eine wirklich eigenartige Lösung

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

Es funktioniert, aber ich frage mich, ob es eine bessere Lösung gibt?

7
mko 6 Okt. 2012 im 08:59

3 Antworten

Beste Antwort

Ich denke, der bevorzugte Weg ist, einheitlich eine schwebende Zahl zwischen {{ X0}} und max_time und verwenden Sie dann die integrierte Runde Funktion (bis zur ersten Dezimalstelle):

round(random.uniform(min_time, max_time), 1)
7
Andy Hayden 6 Okt. 2012 im 09:20
import decimal
import random

- i und j gehören zu deinem Limit wie 2 und 3

decimal.Decimal('%d.%d' % (random.randint(0,i),random.randint(0,j)))
6
Rajendra 6 Okt. 2012 im 06:16

Ich denke, was du hast, ist ziemlich in Ordnung. Obwohl du es auch so schreiben könntest

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

Die andere offensichtliche Option ist

round(random.random()*(m_time-min_time)+min_time, 1)
2
John La Rooy 6 Okt. 2012 im 05:38