Número aleatorio entre 0 y 1 en python

Quiero un número aleatorio entre 0 y 1, como 0,3452. He utilizado random.randrange(0, 1) pero siempre me sale 0. ¿Qué debo hacer?

Solución

Puedes utilizar random.uniform

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

random.random() hace exactamente eso

>>> 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 quieres números realmente aleatorios, y que cubran el rango [0, 1]:


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

Quiero un número aleatorio entre 0 y 1, como 0.3452

random.random() es lo que estás buscando:

De los documentos de python: random.random() Devuelve el siguiente número aleatorio de punto flotante en el rango [0.0, 1.0).


Y, por cierto, ¿Por qué tu intento no funcionó?:

Tu intento fue: random.randrange(0, 1)

De los documentos de python:***

random.randrange() Devuelve un elemento seleccionado aleatoriamente de range(start, stop, step). Esto es equivalente a choice(range(start, stop, step)), pero no construye un objeto range.

Así que, lo que estás haciendo aquí, con random.randrange(a,b) es elegir un elemento al azar de range(a,b); en tu caso, de range(0,1), pero, ¡adivina qué!: el único elemento en range(0,1), es 0, así que, el único elemento que puedes elegir de range(0,1), es 0; esa es la razón por la que siempre recibías 0 de vuelta.

Comentarios (0)