Números aleatorios en NumPy


¿Qué es un número aleatorio?

Número aleatorio NO significa un número diferente cada vez. Aleatorio significa algo que no se puede predecir lógicamente.

Pseudo Random y True Random.

Las computadoras funcionan con programas, y los programas son un conjunto definitivo de instrucciones. Entonces significa que debe haber algún algoritmo para generar un número aleatorio también.

Si hay un programa para generar números aleatorios, se puede predecir, por lo que no es realmente aleatorio.

Los números aleatorios generados a través de un algoritmo de generación se denominan pseudoaleatorios .

¿Podemos hacer números verdaderamente aleatorios?

Si. Para generar un número verdaderamente aleatorio en nuestras computadoras, necesitamos obtener los datos aleatorios de alguna fuente externa. Esta fuente externa es generalmente nuestras pulsaciones de teclas, movimientos del mouse, datos en la red, etc.

No necesitamos números verdaderamente aleatorios, a menos que esté relacionado con la seguridad (p. ej., claves de encriptación) o la base de aplicación sea la aleatoriedad (p. ej., ruedas de ruleta digital).

En este tutorial usaremos números pseudoaleatorios.


Generar número aleatorio

NumPy ofrece el randommódulo para trabajar con números aleatorios.

Ejemplo

Genere un número entero aleatorio de 0 a 100:

from numpy import random

x = random.randint(100)

print(x)

Generar flotante aleatorio

El rand()método del módulo aleatorio devuelve un flotante aleatorio entre 0 y 1.

Ejemplo

Genera un flotante aleatorio de 0 a 1:

from numpy import random

x = random.rand()

print(x)


Generar matriz aleatoria

En NumPy trabajamos con matrices, y puede usar los dos métodos de los ejemplos anteriores para crear matrices aleatorias.

enteros

El randint()método toma un size parámetro donde puede especificar la forma de una matriz.

Ejemplo

Genere una matriz 1-D que contenga 5 enteros aleatorios del 0 al 100:

from numpy import random

x=random.randint(100, size=(5))

print(x)

Ejemplo

Genere una matriz 2-D con 3 filas, cada fila conteniendo 5 enteros aleatorios de 0 a 100:

from numpy import random

x = random.randint(100, size=(3, 5))

print(x)

flotadores

El rand()método también le permite especificar la forma de la matriz.

Ejemplo

Genere una matriz 1-D que contenga 5 flotantes aleatorios:

from numpy import random

x = random.rand(5)

print(x)

Ejemplo

Genere una matriz 2-D con 3 filas, cada fila conteniendo 5 números aleatorios:

from numpy import random

x = random.rand(3, 5)

print(x)

Generar número aleatorio de matriz

El choice()método le permite generar un valor aleatorio basado en una matriz de valores.

El choice()método toma una matriz como parámetro y devuelve aleatoriamente uno de los valores.

Ejemplo

Devuelve uno de los valores en una matriz:

from numpy import random

x = random.choice([3, 5, 7, 9])

print(x)

El choice()método también le permite devolver una matriz de valores.

Agregue un sizeparámetro para especificar la forma de la matriz.

Ejemplo

Genere una matriz 2-D que consta de los valores en el parámetro de matriz (3, 5, 7 y 9):

from numpy import random

x = random.choice([3, 5, 7, 9], size=(3, 5))

print(x)