randrange(start, stop)accetta solo argomenti interi. Quindi come posso ottenere un numero casuale tra due valori float?
randrange(start, stop)accetta solo argomenti interi. Quindi come posso ottenere un numero casuale tra due valori float?
Risposte:
Usa random.uniform (a, b) :
>>> random.uniform(1.5, 1.9)
1.8733202628557872
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < aIn altre parole, l'output Npuò essere uguale a input ae b. In questo caso 1.5e 1.9.
.uniformfunzione, ma invece con uno dei due .randomo randrange?
1.5 + random.random() * (1.9 - 1.5)dovrebbe farlo, anche se secondo le specifiche questo non tornerà mai esattamente 1.9(anche in teoria).
uniform(a, b)implementato come a + (b-a) * random()e restituisce un numero casuale nell'intervallo [a, b) o [a, b] a seconda dell'arrotondamento di github.com/python/cpython/blob/…
se vuoi generare un float casuale con N cifre a destra del punto, puoi farlo:
round(random.uniform(1,2), N)
il secondo argomento è il numero di decimali.
Più comunemente, useresti:
import random
random.uniform(a, b) # range [a, b) or [a, b] depending on floating-point rounding
Python fornisce altre distribuzioni se necessario.
Se hai numpygià importato, puoi usare il suo equivalente:
import numpy as np
np.random.uniform(a, b) # range [a, b)
Ancora una volta, se hai bisogno di un'altra distribuzione, numpyfornisce le stesse distribuzioni di Python, così come molte altre aggiuntive .
np.random.uniform(start, stop)onp.random.uniform(start, stop, samples)se volevi più campioni. Altrimenti le risposte di seguito sono le migliori.