Los sorteos usan la fuente criptográfica del navegador, no Math.random, así que todos los resultados son igual de probables.
1
Por qué la forma obvia de sacar un número aleatorio está algo mal
Tomar un valor aleatorio grande y reducirlo con un resto es el truco habitual, y está sesgado. Si el rango no divide la fuente de forma exacta, algunos números reciben una oportunidad extra. Esta herramienta descarta esos casos y vuelve a sortear, así que cada número del rango es realmente igual de probable.
Cómo funciona
- Saca números en el rango que fijes, de uno en uno o hasta cincuenta a la vez.
- Opcionalmente sortea sin repeticiones, que es lo que hace falta para un sorteo o una línea de lotería.
- Usa crypto.getRandomValues() en lugar de Math.random(), con rechazo para eliminar el sesgo del módulo.
ingenuo: valor % rango → sesgado
correcto: límite = floor(MAX / rango) × rango
volver a sortear mientras valor >= límite
resultado = min + (valor % rango)
sin repeticiones: barajar todo el rango y tomar los primeros nEjemplo resuelto
Sacar un número del 1 al 3 de una fuente que devuelve 0, 1, 2 o 3.
- ingenuo: 0→1, 1→2, 2→3, 3→1, así que el 1 sale dos veces y se lleva el 50% en vez del 33%
- correcto: límite = floor(4 / 3) × 3 = 3, así que sacar un 3 se descarta y se repite
- los resultados restantes 0, 1, 2 se asignan a 1, 2, 3 con 1/3 cada uno
En rangos pequeños frente a una fuente de 32 bits el sesgo es minúsculo, pero real, y quitarlo cuesta muy de vez en cuando un sorteo extra.
Cómo leer el resultado
- Sortear sin repeticiones baraja todo el rango y toma los primeros n, lo que sigue siendo uniforme. Repetir sorteos descartando duplicados empeora mucho cuando el rango está casi agotado.
- El rango incluye ambos extremos: de 1 a 100 puede devolver 1 y puede devolver 100.
- No se transmite nada. El sorteo ocurre en tu navegador, así que ningún servidor ve los números ni puede influir en ellos.
Preguntas frecuentes
- ¿Puedo usarlo para un sorteo de premios?
- Para uno informal, sí: es imparcial y nada sale de tu equipo. Para algo con peso legal o económico, usa un procedimiento que deje un registro auditable, porque un sorteo en el navegador no deja prueba de lo ocurrido.
- ¿Una línea de lotería sacada aquí tiene más opciones?
- No. Todas las combinaciones tienen la misma probabilidad, se elijan como se elijan. Elegir al azar sí hace menos probable compartir un bote, porque la gente se concentra en cumpleaños y patrones.