Pruébalo ahora — Usa nuestro Generador de Números Aleatorios gratuito para elegir un número o realizar un sorteo completo sin repetidos.

¿Qué es un generador de números aleatorios?

Un generador de números aleatorios (RNG) produce números sin patrón predecible. Existen dos tipos principales:

Para uso cotidiano — sorteos, juegos, elegir un ganador, simulaciones estadísticas — un PRNG de calidad como Math.random() del navegador es más que suficiente. Supera todos los tests estándar de aleatoriedad, incluidos Diehard y TestU01.

Cómo realizar un sorteo justo — paso a paso

  1. Asigna un número a cada participante. Si tienes 50 personas, el rango es 1–50.
  2. Abre el Generador de Números Aleatorios. Selecciona el modo Sorteo.
  3. Ajusta Mín a 1 y Máx a 50 (o el número de participantes que tengas).
  4. Establece "Cantidad" al número de ganadores que necesitas — por ejemplo, 3 para primer, segundo y tercer premio.
  5. Activa "Sin repetidos". Garantiza que cada participante solo puede ganar una vez.
  6. Pulsa Realizar Sorteo. Cada bola se anima de forma independiente y cae en un número único.
  7. Copia y registra los resultados. El panel de historial conserva los últimos 8 sorteos como referencia.

El algoritmo Fisher-Yates — cómo funcionan los sorteos sin repetidos

El algoritmo Fisher-Yates (también llamado Knuth shuffle) es el estándar para generar permutaciones uniformemente aleatorias:

  1. Crea un array con todos los números del rango: [1, 2, 3, …, N]
  2. Para cada posición desde la última hasta la primera, intercámbiala con una posición anterior elegida aleatoriamente.
  3. Toma los primeros K elementos del array barajado como resultados del sorteo.

Todas las permutaciones son igualmente probables, lo que hace al algoritmo matemáticamente equivalente a extraer números de una urna física — sin sesgos ni repeticiones.

Generar números aleatorios en código

JavaScript

// Entero aleatorio entre min y max (inclusive)
function randInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

randInt(1, 100); // p. ej. 42

// Criptográficamente seguro (para contraseñas/tokens)
const array = new Uint32Array(1);
crypto.getRandomValues(array);
const seguro = array[0] % 100 + 1; // 1–100

Python

import random

# Entero aleatorio único
random.randint(1, 100)  # p. ej. 73

# Sorteo: 5 números únicos de 1–50
ganadores = random.sample(range(1, 51), 5)

# Criptográficamente seguro
import secrets
secrets.randbelow(100) + 1  # 1–100

Excel / Google Sheets

=ALEATORIO.ENTRE(1; 100)     ' Entero aleatorio 1–100

' Nota: ALEATORIO.ENTRE se recalcula con cada cambio.
' Pega como valores (Ctrl+Mayús+V) para fijar el resultado.

PHP

<?php
// Estándar (Mersenne Twister)
$n = rand(1, 100);

// Criptográficamente seguro
$n = random_int(1, 100);
?>

Ruby

# Entero aleatorio 1–100
rand(1..100)

# Seguro criptográficamente
require 'securerandom'
SecureRandom.random_number(100) + 1

Consejos para sorteos justos y transparentes

Preguntas frecuentes

¿Es Math.random() suficiente para un sorteo?

Sí. Los PRNGs de los navegadores usan algoritmos como xorshift128+ que producen miles de millones de valores distintos sin sesgo detectable. Para sorteos con cientos o miles de participantes, la probabilidad de cualquier resultado injusto es despreciable.

¿Cuál es la diferencia entre Math.random() y crypto.getRandomValues()?

Math.random() es rápido y válido para juegos, sorteos y simulaciones. crypto.getRandomValues() usa la entropía del sistema operativo y es criptográficamente seguro — necesario para contraseñas y tokens, pero innecesario para elegir números aleatorios en un sorteo.

¿Cómo genero un número aleatorio entre 1 y 100?

Online: abre nuestra herramienta, ajusta Mín a 1 y Máx a 100, pulsa Generar. En código: Math.floor(Math.random() * 100) + 1 en JavaScript, o random.randint(1, 100) en Python.

¿Puede salir el mismo número dos veces en modo sorteo?

No cuando "sin repetidos" está activado. Con la opción desactivada sí pueden repetirse — útil para simular tiradas de dados o muestreo con reemplazo.

Conclusión

Un buen generador de números aleatorios cubre desde elegir el destino de las vacaciones hasta organizar un sorteo completamente auditable. Para uso cotidiano, los PRNGs del navegador son estadísticamente justos y más que suficientes. Cuando necesitas garantías criptográficas, recurre a crypto.getRandomValues() o al módulo secrets de Python.

¿Listo para tu sorteo? Abrir el Generador de Números Aleatorios →

Herramientas relacionadas