Ir al contenido principal

Tutorial: generador de números aleatorios con NumPy

El módulo random de NumPy es un conjunto de funciones basadas en la generación de números seudoaleatorios. Aleatorio significa que no se puede predecir lógicamente.
Actualizado 17 sept 2026  · 4 min leer

Explorar con IA

ChatGPTClaudePerplexity

El módulo random de NumPy es un conjunto de funciones basadas en la generación de números seudoaleatorios. Aleatorio significa algo que no se puede predecir lógicamente.

np.random.seed() función

En este ejemplo vas a simular el lanzamiento de una moneda. Usarás la función np.random(), que extrae un número entre 0 y 1 de forma que todos los números de ese intervalo tienen la misma probabilidad de aparecer.

Si el número que obtienes es menor que 0.5, lo que tiene un 50% de probabilidad, dices cara; en caso contrario, cruz. Este tipo de experimento en el que el resultado es Verdadero (cara) o Falso (cruz) se conoce como ensayo de Bernoulli.

El generador de números seudoaleatorios funciona partiendo de un entero llamado semilla y generando números en sucesión. La misma semilla produce la misma secuencia de números aleatorios, de ahí lo de "seudo" aleatorio. Si quieres que tu código sea reproducible, conviene inicializar el generador con la función np.random.seed().

Para simular los lanzamientos, importas NumPy, fijas la semilla y luego generas cuatro números aleatorios. Puedes indicar cuántos quieres con el argumento size.

import numpy as np
np.random.seed(42)
random_numbers = np.random.random(size=4)
random_numbers
array([0.3745012, 0.95071431, 0.73199394, 0.59865848])

El primer número es menor que 0.5, así que es cara, mientras que los otros tres son cruz. Puedes mostrarlo de forma explícita usando la operación "menor que", que te devuelve un array de valores booleanos: True para cara y False para cruz.

heads = random_numbers < 0.5
heads
array([True, False, False, False], dtype=bool)

Por último, puedes calcular cuántas caras han salido sumando el array booleano heads, porque en contexto numérico Python trata True como uno y False como cero.

np.sum(heads)
1

Simulación de cuatro lanzamientos aleatorios

En el siguiente ejemplo queremos saber la probabilidad de obtener cuatro caras si repitiéramos los cuatro lanzamientos una y otra vez. Podemos hacerlo con un bucle for.

Primero inicializamos el contador a cero. Luego repetimos 10.000 veces las pruebas de cuatro lanzamientos. Si en una prueba salen cuatro caras, incrementamos el contador.

Entonces, ¿cuál es la probabilidad de obtener cuatro caras? Es el número de veces que han salido todas caras dividido entre el número total de pruebas. El resultado es aproximadamente 0.06.

n_all_heads = 0

# Inicializa el número de pruebas con 4 caras
for _ in range(10000):
         heads = np.random.random(size=4) < 0.5
         n_heads = np.sum(heads)
         if n_heads == 4:
             n_all_heads += 1

n_all_heads / 10000
0.0621

Ejemplo interactivo de generación de números aleatorios

En este ejemplo generaremos muchos números aleatorios entre cero y uno y luego representaremos un histograma con los resultados. Si los números son realmente aleatorios, todas las barras del histograma deberían tener una altura (aproximadamente) igual.

Para este ejemplo necesitas:

  • Fijar la semilla del generador con np.random.seed usando la semilla 42.
  • Inicializar un array vacío, random_numbers, de 100.000 posiciones para guardar los números aleatorios. Asegúrate de usar np.empty(100000) para ello.
  • Escribir un bucle for para generar 100.000 números aleatorios con np.random.random(), almacenándolos en el array random_numbers. Para ello, itera sobre range(100000).
  • Representar un histograma de random_numbers. No es necesario etiquetar los ejes en este caso porque solo estamos comprobando el generador de números aleatorios.
# Fija la semilla del generador de números aleatorios
np.random.seed(42)

# Inicializa los números aleatorios: random_numbers
random_numbers = np.empty(100000)

# Genera números aleatorios iterando sobre range(100000)
for i in range(100000):
    random_numbers[i] = np.random.random()

# Dibuja un histograma
_ = plt.hist(random_numbers)

# Muestra la gráfica
plt.show()

Al ejecutar el código anterior, se obtiene el siguiente resultado:

histogram

Pruébalo tú mismo.

Para saber más sobre generadores de números aleatorios y hacker statistics, echa un vistazo a este vídeo de nuestro curso Statistical Thinking in Python (Part 1).

Este contenido está extraído del curso Statistical Thinking in Python (Part 1) de DataCamp, impartido por Justin Bois.

Temas
Python

Aprende más sobre Python

Curso

Introducción a NumPy

4 h
62K
Desarrolla tus habilidades y domina NumPy y aprende a crear, ordenar, filtrar y actualizar matrices mediante el censo de árboles de NYC.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Arreglos en Python

Arreglos de Python con ejemplos de código. ¡Aprende hoy mismo a crear e imprimir arreglos con Python NumPy!
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Tutorial de módulos de Python: Importarlos, escribirlos y utilizarlos

Aprende a crear e importar módulos de Python. ¡Descubre las mejores prácticas, ejemplos y consejos para escribir código Python reutilizable, organizado y eficiente!

Nishant Kumar

8 min

Tutorial

Tutorial de Python sobre conjuntos y teoría de conjuntos

Aprende sobre los conjuntos en Python: qué son, cómo crearlos, cuándo usarlos, funciones incorporadas y su relación con las operaciones de la teoría de conjuntos.
DataCamp Team's photo

DataCamp Team

13 min

Tutorial

Tutorial de Generación de nubes de palabras en Python

Aprende a realizar Análisis exploratorios de datos para el Procesamiento del lenguaje natural utilizando WordCloud en Python.
Duong Vu's photo

Duong Vu

11 min

Tutorial

Funciones en Python: cómo llamar y escribir funciones

Descubre cómo escribir funciones en Python reutilizables y eficientes. Domina los parámetros, las sentencias return y temas avanzados como las funciones lambda. Organiza mejor tu código con main() y otras buenas prácticas.
Karlijn Willems's photo

Karlijn Willems

14 min

Tutorial

Tutorial sobre la función range() de Python

Aprende sobre la función range() de Python y sus capacidades con la ayuda de ejemplos.
Aditya Sharma's photo

Aditya Sharma

7 min

Ver MásVer Más