Diferencia entre funciones generando números aleatorios en números.

Estoy tratando de entender cuál es la diferencia, si la hay, entre estas funciones:

numpy.random.rand() numpy.random.random() numpy.random.uniform() 

Parece que producen una muestra aleatoria a partir de una distribución uniforme. Entonces, sin ningún parámetro en la función, ¿hay alguna diferencia?

numpy.random.uniform(low=0.0, high=1.0, size=None) – muestras uniformes de rango arbitrario

Extraer muestras de una distribución uniforme.
Las muestras se distribuyen uniformemente en el intervalo medio abierto [low, high) (incluye bajo, pero excluye alto). En otras palabras, cualquier valor dentro del intervalo dado es igualmente probable que se dibuje de manera uniforme.

numpy.random.random(size=None) – distribución uniforme entre 0 y 1

Devuelve los flotadores aleatorios en el intervalo semiabierto [0.0, 1.0) .
Los resultados son de la distribución “uniforme continua” en el intervalo establecido. Para muestrear Unif[a, b) , b > a multiplica la salida de random_sample by (ba) y agrega a:
(b - a) * random_sample() + a

numpy.random.rand(d0, d1, ..., dn) – Muestras de una distribución uniforme para poblar una matriz de una forma dada

Valores aleatorios en una forma dada.
Cree una matriz de la forma dada y propáguela con muestras aleatorias de una distribución uniforme en [0, 1) .

Para responder a su otra pregunta, dados todos los parámetros predeterminados, todas las funciones numpy.random.uniform , numpy.random.random y numpy.random.rand son idénticas.

Respuesta corta

Sin parámetros, las tres funciones son equivalentes, produciendo un flotador aleatorio en el rango [0.0,1.0).

Detalles

numpy.random.rand es una función de conveniencia que acepta un número arbitrario de parámetros como dimensiones. También es diferente de las otras funciones numpy.random , numpy.zeros y numpy.ones , ya que todas las demás aceptan formas, es decir, tuplas N (especificadas como listas o tuplas de Python). Las siguientes dos líneas producen resultados idénticos (a pesar de la semilla aleatoria):

 import numpy as np x = np.random.random_sample((1,2,3)) # a single tuple as parameter x = np.random.rand(1,2,3) # integers as parameters 

numpy.random.random es un alias para numpy.random.random_sample .

numpy.random.uniform permite especificar los límites de la distribución, con los parámetros de palabra clave low y high , en lugar de usar el valor predeterminado [0.0,1.0).