Skip to main content

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 n

Ejemplo resuelto

Sacar un número del 1 al 3 de una fuente que devuelve 0, 1, 2 o 3.

  1. 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%
  2. correcto: límite = floor(4 / 3) × 3 = 3, así que sacar un 3 se descarta y se repite
  3. 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.