Generador de números aleatorios
Un número entero al azar entre dos límites
Generador de números aleatorios
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ú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
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
- El navegador llena una palabra de 32 bits con
crypto.getRandomValues(): un valor del 0 al 4.294.967.295. - Las palabras iguales o mayores que
⌊232 / N⌋ × Nse 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. - 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
| Rango | Números enteros | Probabilidad de cada número | Tiradas hasta el 50% |
|---|---|---|---|
| 1–2 | 2 | 50% | 1 |
| 1–6 | 6 | ≈16,67% | 4 |
| 1–10 | 10 | 10% | 7 |
| 1–20 | 20 | 5% | 14 |
| 1–100 | 100 | 1% | 69 |
| 1–1.000 | 1.000 | 0,1% | 693 |
| 1–10.000 | 10.000 | 0,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
- Ruleta aleatoria - Selector de nombres al azar y ruleta de decisiones — gírala y elige por ti
- Convertidor de Porcentaje a Probabilidad - Convertir porcentaje en probabilidad "1 en X"