Nombre aléatoire entre 0 et 1 en python

Je veux un nombre aléatoire entre 0 et 1, comme 0.3452. J'ai utilisé random.randrange(0, 1) mais c'est toujours 0 pour moi. Que dois-je faire ?

Solution

Vous pouvez utiliser random.uniform.

import random
random.uniform(0, 1)
Commentaires (4)

random.random() fait exactement ça

>>> import random
>>> for i in range(10):
...     print(random.random())
... 
0.908047338626
0.0199900075962
0.904058545833
0.321508119045
0.657086320195
0.714084413092
0.315924955063
0.696965958019
0.93824013683
0.484207425759

Si vous voulez des nombres vraiment aléatoires, et couvrir l'intervalle [0, 1] :


>>> import os
>>> int.from_bytes(os.urandom(8), byteorder="big") / ((1 
Commentaires (3)

Je veux un nombre aléatoire entre 0 et 1, comme 0.3452

random.random() est ce que vous recherchez :

Dans la documentation de python: [random.random()][1] Renvoie le prochain nombre aléatoire à virgule flottante dans l'intervalle [0.0.0.1]. l'intervalle [0.0, 1.0).


Et, au fait, pourquoi votre essai n'a-t-il pas fonctionné ?

Votre essai était : random.randrange(0, 1)

Dans la documentation de python: [random.randrange()][2] Renvoie un élément choisi au hasard dans l'intervalle(start, stop, step). Ceci est équivalent à choice(range(start, stop, step)), mais ne construit pas réellement un objet range.

Donc, ce que vous faites ici, avec random.randrange(a,b), c'est choisir un élément aléatoire dans range(a,b) ; dans votre cas, dans range(0,1), mais, devinez quoi! : le seul élément dans range(0,1), est 0, donc, le seul élément que vous pouvez choisir dans range(0,1), est 0 ; c'est pourquoi vous obteniez toujours 0 en retour.

[1] : https://docs.python.org/3/library/random.html#random.random [2] : https://docs.python.org/3/library/random.html#random.randrange

Commentaires (0)