La meilleure façon que je sais faire est comme ceci:
for i in range(10):
print (random.random() * (0.909 - 0.101) + 0.101)
Comment ça marche? La formule générale pour générer un nombre aléatoire 0
-B
est la suivante:
random.random() * B
Parce que random.random()
génère un nombre dans la gamme [0,1)
, de sorte que la multiplication par B
numéros de rendement entre [0,B)
. Maintenant, si vous ne voulez pas commencer la gamme résultante à 0
mais A
, vous ne pouvez essayer d'écrire:
random.random() * B + A
Mais qui donne un nombre entre [A,A+B)
qui n'est pas ce que vous voulez, c'est la raison pour laquelle nous la soustraction trop:
random.random() * (B - A) + A
Aller étape par étape:
random.random() -> [0,1)
random.random() * (B - A) -> [0,B-A)
random.random() * (B - A) + A -> [A,B)
Dans votre cas, A = 0.101
et B=0.909
. Notez que, comme la plage est ouverte à droite, vous n'obtiendrez jamais exactement 0.909
mais vous pouvez obtenir 0.90899999
ou toute autre chose qui est très proche. Enfin, à propos du nombre de décimales, consultez la documentation de la fonction print
sur la façon d'imprimer des nombres jusqu'à une certaine position décimale (ceci est différent selon votre version de Python). Par exemple cela pourrait être comme ceci dans Python3:
print('{0:0.3f}'.format(my_var))
En utilisant randint (750,950)/1000? –