float python random uniform

float - En python, ¿cuál es la diferencia entre random.uniform() y random.random()?



random uniform python (5)

En python para el módulo aleatorio, ¿cuál es la diferencia entre random.uniform() y random.random() ? Ambos generan números pseudoaleatorios, random.uniform() genera números a partir de una distribución uniforme y random.random() genera el siguiente número aleatorio. ¿Cuál es la diferencia?


Aparte de lo que se menciona anteriormente, .uniform() también se puede usar para generar múltiples números aleatorios que también con la forma deseada que no es posible con .random()

np.random.seed(99) np.random.random() #generates 0.6722785586307918

mientras que el siguiente código

np.random.seed(99) np.random.uniform(0.0, 1.0, size = (5,2)) #generates this array([[0.67227856, 0.4880784 ], [0.82549517, 0.03144639], [0.80804996, 0.56561742], [0.2976225 , 0.04669572], [0.9906274 , 0.00682573]])

Esto no se puede hacer con aleatorio (...), y si está generando los números aleatorios (...) para cosas relacionadas con el ML, la mayoría de las veces, terminará usando .uniform(...)


En random.random () la salida se encuentra entre 0 y 1, y no toma parámetros de entrada

Mientras que random.uniform () toma parámetros, en donde puede enviar el rango del número aleatorio. p.ej
import random as ra print ra.random() print ra.uniform(5,10)

SALIDA:-
0.672485369423 7.9237539416


La diferencia está en los argumentos. Es muy común generar un número aleatorio a partir de una distribución uniforme en el rango [0.0, 1.0), por lo que random.random() simplemente hace esto. Use random.uniform(a, b) para especificar un rango diferente.


Según la documentación en random.uniform :

Devuelva un número de punto flotante aleatorio N tal que a <= N <= b para a <= b y b <= N <= a para b <a.

mientras random.random() :

Devuelva el siguiente número de punto flotante aleatorio en el rango [0.0, 1.0).

Es decir, con random.uniform especifica un rango del que random.uniform números pseudoaleatorios, por ejemplo, entre 3 y 10. Con random.random , obtiene un número entre 0 y 1.


random.random() te da un número de punto flotante aleatorio en el rango [0.0, 1.0) (por lo que incluye 0.0 , pero no 1.0 que también se conoce como rango semiabierto). random.uniform(a, b) te da un número aleatorio de punto flotante en el rango [a, b] , (donde el redondeo puede terminar dándote b ).

La implementación de random.uniform() usa random.random() directamente:

def uniform(self, a, b): "Get a random number in the range [a, b) or [a, b] depending on rounding." return a + (b-a) * self.random()

random.uniform(0, 1) es básicamente lo mismo que random.random() (ya que 1.0 veces el valor flotante más cercano a 1.0 aún le dará un valor flotante más cercano a 1.0 no hay posibilidad de un error de redondeo allí).