Numero casuale tra 0 e 1 in python

Voglio un numero casuale tra 0 e 1, come 0,3452. Ho usato random.randrange(0, 1) ma è sempre 0 per me. Cosa dovrei fare?

Soluzione

Si può usare random.uniform.

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

random.random() fa esattamente questo

>>> 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

Se volete numeri realmente casuali, e per coprire l'intervallo [0, 1]:


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

Voglio un numero casuale tra 0 e 1, come 0,3452

random.random() è quello che stai cercando:

Dalla documentazione di python:

random.random() Restituisce il prossimo numero casuale in virgola mobile nell intervallo [0.0, 1.0).


E, btw, ***Perché il tuo tentativo non ha funzionato?

Il tuo tentativo era: random.randrange(0, 1)

Dalla documentazione di python:

random.randrange() Restituisce un elemento selezionato a caso da range(start, stop, step). Questo è equivalente a choice(range(start, stop, step)), ma non costruisce effettivamente un oggetto range.

Quindi, quello che state facendo qui, con random.randrange(a,b) è scegliere un elemento casuale da range(a,b); nel vostro caso, da range(0,1), ma, indovinate un po': l'unico elemento in range(0,1), è 0, quindi, l'unico elemento che potete scegliere da range(0,1), è 0; è perché stavate sempre ottenendo 0 indietro.

Commentari (0)