Generación de Números Aleatorios en NumPy

La generación de números aleatorios es una parte fundamental de la programación y la ciencia de datos. NumPy, una biblioteca ampliamente utilizada en Python, ofrece herramientas poderosas para generar números aleatorios. En este artículo, exploraremos cómo utilizar NumPy para generar números enteros y flotantes aleatorios, así como matrices aleatorias, y cómo seleccionar valores aleatorios a partir de una matriz. Además, discutiremos brevemente la diferencia entre números pseudoaleatorios y verdaderamente aleatorios.


Qué es un Número Aleatorio

Comencemos por aclarar qué se entiende por «número aleatorio». Contrario a la intuición, un número aleatorio no significa necesariamente un número diferente cada vez que se genera. En este contexto, «aleatorio» se refiere a algo que no se puede predecir lógicamente. Sin embargo, en el mundo de la informática, la generación de números aleatorios es impulsada por algoritmos, lo que significa que, en teoría, estos números pueden ser predecidos. Estos números se denominan números pseudoaleatorios.


Pseudoaleatorios vs. Verdaderamente Aleatorios

Los números pseudoaleatorios son generados por algoritmos y, por lo tanto, pueden ser predecibles si se conocen las condiciones iniciales. Por otro lado, los números verdaderamente aleatorios provienen de fuentes externas, como las pulsaciones de teclas, los movimientos del ratón o el ruido en la red. Estos últimos son verdaderamente impredecibles y se utilizan en aplicaciones de alta seguridad y en situaciones donde la aleatoriedad es fundamental.


Generación de Números Aleatorios con NumPy

NumPy ofrece el módulo random que proporciona una amplia gama de funciones para trabajar con números aleatorios. A continuación, exploraremos algunas de las funciones más comunes.


Generar un Número Entero Aleatorio

El método randint() del módulo random nos permite generar un número entero aleatorio dentro de un rango especificado.

import numpy as np

# Generar un número entero aleatorio entre 10 y 50
x = np.random.randint(10, 50)
print(x)

Generar un Número Flotante Aleatorio

El método rand() del módulo random nos proporciona un valor flotante aleatorio entre 0 y 1.

import numpy as np

# Generar un valor flotante aleatorio entre 0 y 1
x = np.random.rand()
print(x)

Generar una Matriz Aleatoria

En muchas aplicaciones, es necesario trabajar con matrices aleatorias. NumPy nos permite generar fácilmente matrices aleatorias de diversas formas.

Ejemplo 1: Generar una matriz 1-D con 7 números enteros aleatorios del 1 al 100

import numpy as np

x = np.random.randint(1, 100, size=(7,))
print(x)

Ejemplo 2: Generar una matriz 2-D con 4 filas, cada fila contiene 6 números enteros aleatorios del 10 al 50

import numpy as np

x = np.random.randint(10, 50, size=(4, 6))
print(x)

Generar Números Flotantes Aleatorios en una Matriz

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

Ejemplo 1: Generar una matriz 1-D con 5 números flotantes aleatorios

import numpy as np

x = np.random.rand(5)
print(x)

Ejemplo 2: Generar una matriz 2-D con 3 filas, cada fila contiene 5 números aleatorios

import numpy as np

x = np.random.rand(3, 5)
print(x)

Generar un Número Aleatorio a partir de una Matriz

El método choice() nos permite generar un valor aleatorio basado en una matriz de valores. Toma una matriz como parámetro y devuelve aleatoriamente uno de los valores.

Ejemplo: Devolver uno de los valores de una matriz

import numpy as np

x = np.random.choice([2, 4, 6, 8])
print(x)

Ejemplo: Generar una matriz 2-D que consta de los valores [1, 3, 5, 7]

import numpy as np

x = np.random.choice([1, 3, 5, 7], size=(3, 5))
print(x)

La generación de números aleatorios es esencial en una amplia variedad de aplicaciones, desde la simulación hasta el aprendizaje automático. NumPy facilita esta tarea al proporcionar herramientas eficientes y versátiles para generar números aleatorios. Aprovecha estas funciones para añadir aleatoriedad a tus proyectos y análisis de datos.