Cómo se garantiza una ruleta justa
Cada giro lo decide el generador criptográfico de números aleatorios de tu navegador antes de que la ruleta empiece a moverse. Nada de lo que escribes se nos envía. En esta página te explicamos el método y te mostramos la última auditoría automática.
Cómo se elige al ganador
El ganador se saca con crypto.getRandomValues, el mismo generador criptográficamente seguro que usan los navegadores para las claves de cifrado.
Los números aleatorios de 32 bits se convierten en una posición de la ruleta mediante muestreo por rechazo: un número que haría que algunas opciones fueran ligeramente más probables que otras se descarta y se vuelve a sacar otro. Así se elimina el pequeño sesgo que produce tomar el resto de una división.
Primero se elige al ganador. Después, la animación hace girar la ruleta para que se detenga dentro del sector del ganador, en un punto aleatorio alejado de sus bordes.
Pesos
Una opción escrita como Pizza*3 tiene el triple de probabilidades de salir que una opción de peso 1, y su sector es el triple de ancho. Los pesos pueden ser números enteros o decimales de 0,001 a 1.000.000. Al escribir un decimal en la ruleta, usa un punto, por ejemplo Pizza*0.5.
Sorteos verificables
En sorteos y rifas, un sorteo verificable permite que cualquiera compruebe después que el resultado no se ha cambiado.
- Antes del giro, la página crea una semilla secreta y muestra un hash SHA-256 de la semilla, las opciones y la hora. Publica el hash, por ejemplo en el chat de tu directo, antes de girar.
- El giro usa un generador construido a partir de la semilla secreta, de modo que la semilla y las opciones determinan por completo al ganador.
- Después del giro, la página revela la semilla en un justificante del sorteo. Cualquiera puede pegar el justificante en la página de verificación, que comprueba el hash y vuelve a calcular el ganador.
El método exacto
El hash es el SHA-256 de este texto en UTF-8: una línea de cabecera, la hora del sellado, la semilla y, a continuación, una línea por opción con su peso, un tabulador y su etiqueta.
weeks-and-random-draw v1
committed_at: 2026-10-16T14:05:09.123Z
seed: 64 hexadecimal characters
3 Pizza
1.5 Sushi
- La semilla son 32 bytes aleatorios obtenidos con crypto.getRandomValues, escritos como 64 caracteres hexadecimales en minúscula.
- El generador produce números de 32 bits a partir de SHA-256(bytes de la semilla seguidos de un contador big-endian de 4 bytes), para el contador 0, 1, 2 y así sucesivamente, leyendo cada hash de 32 bytes como ocho números big-endian.
- Si todos los pesos son números enteros y el peso total es como máximo 2^32, el sorteo toma el siguiente número de 32 bits, lo descarta mientras sea mayor o igual que 2^32 − (2^32 mod total) y se queda con el resto de dividirlo entre el total.
- Si no, toma los dos siguientes números de 32 bits, a y b, y calcula ((a >> 5) × 2^26 + (b >> 6)) ÷ 2^53, un número desde 0 hasta 1 sin incluir el 1, y lo multiplica por el peso total.
- El ganador es la primera opción cuya suma acumulada de pesos es mayor que ese número.
Un sorteo verificable demuestra que las opciones y el resultado no se cambiaron después de publicar el hash. No puede impedir que un organizador cree varios hashes en privado y publique solo el que le convenga, así que publica el hash antes de cerrar la participación y crea solo uno.
Verificar un justificante de sorteo
Última auditoría
Nuestro proceso de compilación ejecuta estas pruebas con cada cambio en el sitio. Última ejecución: 19 de octubre de 2026 18:31.
Todas las pruebas se han superado.
| Escenario | Giros | Chi cuadrado | Grados de libertad | Valor p | Resultado |
|---|---|---|---|---|---|
| 2 opciones iguales | 1.000.000 | 0,86 | 1 | 0,3544 | Superada |
| 7 opciones iguales | 1.000.000 | 3,42 | 6 | 0,7549 | Superada |
| 100 opciones iguales | 1.000.000 | 125,45 | 99 | 0,0375 | Superada |
| 1000 opciones iguales | 1.000.000 | 1081,73 | 999 | 0,0346 | Superada |
| Modo eliminar al ganador, 7 opciones, todas las posiciones | 999.999 | 41,72 | 36 | 0,2360 | Superada |
| Modo sin repetir, 7 opciones, todas las posiciones | 999.999 | 39,90 | 36 | 0,3007 | Superada |
| Pesos | Giros | Mayor diferencia | Resultado |
|---|---|---|---|
| 1, 2, 3, 4 | 1.000.000 | 0,030 puntos porcentuales | Superada |
| 0.5, 1.5, 3, 0.25 | 1.000.000 | 0,050 puntos porcentuales | Superada |
10.000 de 10.000 giros de prueba se detuvieron en el ganador anunciado.
10.000 de 10.000 justificantes de sorteo generados al azar se volvieron a calcular correctamente, tanto en el navegador como con una implementación independiente.
Versión del motor de la ruleta: d828d1f5c0c3.