Generador de números aleatorios

Un número entero al azar entre dos límites

Generador de números aleatorios

Número aleatorio del
al

Cómo funciona el generador de números aleatorios

Rangos populares

1–10 · 1–100 · 1–6 · 1–2 · 1–3 · 1–4 · 1–5 · 1–20 · 1–50 · 1–1.000 · 0–9 · 0–1 · 1–60 · 1–12 · 1–30 · 1–8 · 1–25 · 1–365 · 1–10.000 · 0–100 · 1–200 · 1–500 · 1–40 · 0–10

La fórmula de cualquier rango

Un rango de min a max con los dos extremos incluidos contiene

N = max − min + 1

números enteros, y un generador justo da a cada uno la misma probabilidad, P = 1 / N. El «+ 1» es lo que más se olvida: del 1 al 100 hay 100 números, no 99, porque cuentan los dos extremos. Con repetición las tiradas son independientes, y la probabilidad de que un número concreto salga al menos una vez en k tiradas es

1 − (1 − 1/N)k

que supera el 50% hacia las 0,69 × N tiradas (ln 2 ≈ 0,693), no a las N / 2.

Cómo se saca un número, paso a paso

  1. El navegador llena una palabra de 32 bits con crypto.getRandomValues(): un valor del 0 al 4.294.967.295.
  2. Las palabras iguales o mayores que ⌊232 / N⌋ × N se descartan y se vuelven a sacar. Ese corte deja un espacio múltiplo exacto de N; sin él, el resto favorecería un poco a los números bajos.
  3. La palabra aceptada se divide entre N y el resto se suma a min. Para varios números distintos el generador baraja el rango parcialmente (Fisher–Yates), así que cada número solo puede salir una vez.

Por qué no Math.random()

Math.random() es un generador rápido de uso general: el estándar del lenguaje no le exige ser impredecible, y los navegadores lo implementan con algoritmos cuya siguiente salida se puede reconstruir a partir de las anteriores. crypto.getRandomValues() es la fuente criptográficamente segura del navegador, alimentada por el sistema operativo: la misma con la que se generan claves de cifrado. No hay alternativa: un navegador sin ella recibe un aviso, no un número más débil.

Cómo leer el resultado

RangoNúmeros enterosProbabilidad de cada número Tiradas hasta el 50%
1–2250%1
1–66≈16,67%4
1–101010%7
1–20205%14
1–1001001%69
1–1.0001.0000,1%693
1–10.00010.0000,01%6.932

«Tiradas hasta el 50%» es cuántas tiradas independientes hacen falta para que un número concreto tenga al menos la mitad de probabilidad de haber salido una vez. Las tiradas anteriores no cambian nada: un número que lleva tiempo sin salir no «está al caer».

Para qué se usa

  • Sorteos y concursos: numera las participaciones y saca un ganador del 1 al total.
  • Combinaciones tipo lotería: varios números distintos a la vez con «Sin repetir», ordenados si quieres.
  • Juegos: en lugar de un dado: del 1 al 6 para uno normal, del 1 al 20 para un d20.
  • Clases y reuniones: elegir a quién le toca según su número en la lista.
  • Muestreo: decidir qué filas, productos o encuestados entran en una muestra aleatoria.
  • Desempatar: cuando todas las opciones valen lo mismo, que decida un número.

Límites y advertencias

  • Un algoritmo, no un proceso físico. Los números salen de un generador pseudoaleatorio criptográficamente seguro: impredecible en la práctica, pero calculado. Servicios como random.org obtienen el azar del ruido físico; en los sorteos cotidianos la diferencia no se nota.
  • Solo números enteros, del 0 al 1.000.000; el límite inferior debe ser menor que el superior.
  • Hasta 1.000 números por tirada, y sin repetición no más de los que tiene el rango.
  • No se guarda nada. El historial solo vive en esta pestaña; para un sorteo que deba constar ante testigos o auditarse, sigue el procedimiento de tus bases.

Ver también

Generador de números aleatorios

Este generador elige un número entero al azar entre dos límites, ambos incluidos. El número se obtiene en tu navegador de su fuente aleatoria criptográfica, y todos los números del rango tienen la misma probabilidad. Por ejemplo, puede ayudarte a determinar ¿Un número aleatorio entre 1 y 100? Escribe el límite inferior (por ejemplo, '1') y el superior (por ejemplo, '100') y pulsa «Generar». En la página del rango puedes sacar varios números a la vez, con o sin repetición.

FAQ

¿Cómo elige el número el generador?

Pide al navegador un valor aleatorio de 32 bits con crypto.getRandomValues() y lo traslada al rango. Los valores del último bloque incompleto del espacio de 32 bits se descartan y se vuelven a sacar (muestreo por rechazo), así que todos los números del rango tienen exactamente la misma probabilidad y los pequeños no salen favorecidos.

¿Se incluyen los dos límites?

Sí. Del 1 al 100 hay 100 números enteros, y el 1 y el 100 salen tan a menudo como el 50. En general, de min a max hay max − min + 1 números, y cada uno tiene una probabilidad de 1 entre esa cantidad.

¿Puedo sacar varios números sin repetir?

Sí. Indica cuántos números necesitas y marca «Sin repetir»: el generador saca sin reposición, como bolas de un bombo, y ningún número aparece dos veces. Sin repetición no se pueden pedir más números de los que tiene el rango.

¿Es realmente aleatorio el número?

El generador criptográfico del navegador toma su semilla de la entropía del sistema operativo y está diseñado para que su salida no se pueda predecir: es el mismo tipo de fuente con el que se crean claves de cifrado. Aun así es un algoritmo, no un proceso físico; para un sorteo oficial con acta usa el procedimiento que exijan tus bases.