randrange(start, stop)
solo toma argumentos enteros. Entonces, ¿cómo obtendría un número aleatorio entre dos valores flotantes?
python
random
floating-point
Trineo Mantis
fuente
fuente
np.random.uniform(start, stop)
onp.random.uniform(start, stop, samples)
si quería múltiples muestras. De lo contrario, las respuestas a continuación son las mejores.Respuestas:
Utilice random.uniform (a, b) :
fuente
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a
En otras palabras, la salidaN
puede ser igual a la entradaa
yb
. En este caso1.5
y1.9
..uniform
función, sino con cualquiera.random
orandrange
?1.5 + random.random() * (1.9 - 1.5)
debería hacerlo, aunque de acuerdo con las especificaciones, esto nunca volverá exactamente1.9
(incluso en teoría).uniform(a, b)
implementado comoa + (b-a) * random()
y devuelve un número aleatorio en el rango [a, b) o [a, b] dependiendo del redondeo github.com/python/cpython/blob/…random.uniform(a, b)
parece ser lo que estás buscando. De los documentos:Ver aquí .
fuente
si desea generar un flotante aleatorio con N dígitos a la derecha del punto, puede hacer esto:
El segundo argumento es el número de decimales.
fuente
Más comúnmente, usarías:
Python proporciona otras distribuciones si lo necesita.
Si ya ha
numpy
importado, puede usar su equivalente:Nuevamente, si necesita otra distribución,
numpy
proporciona las mismas distribuciones que python, así como muchas más .fuente