Transparencia y Rigor Científico

Metodología de Imparcialidad y Auditoría Criptográfica

La confianza en un simulador de decisiones depende de la integridad de su generador de números aleatorios. En ruleta-aleatoria.eu rechazamos el uso de generadores pseudoaleatorios convencionales y empleamos exclusivamente la interfaz W3C Web Cryptography API (window.crypto.getRandomValues) para obtener entropía de hardware directamente del procesador del cliente.

Simulación Estadística en Tiempo Real
Prueba de Bondad de Ajuste Chi-Cuadrado (χ²)

Verifica la uniformidad probabilística de nuestro motor criptográfico. La prueba evalúa si los 8 sectores de la ruleta presentan desviaciones estadísticamente significativas respecto a la frecuencia teórica esperada (Ei = N / 8).

Sector Obs. (Oi) Esp. (Ei) Desviación χ²
Pulsa "Ejecutar 10.000 Giros" para calcular la distribución en vivo.
Estadístico χ² Calculado
Grados de Libertad (df) 7
Valor Crítico (α = 0.05) 14.067
Conclusión de Imparcialidad

1. La Vulnerabilidad de Math.random() frente a CSPRNG

En la inmensa mayoría de páginas web de ruletas en idioma español, el programador implementa la función nativa Math.random(). Aunque esta solución resulta cómoda para pruebas no críticas, presenta deficiencias estructurales insalvables para sorteos y apuestas:

  • Algoritmo No Criptográfico: La especificación ECMAScript no exige seguridad criptográfica para Math.random(). Los navegadores modernos implementan variantes del algoritmo Xoroshiro128+ o Xorshift128+, diseñados primordialmente para velocidad y bajo consumo de memoria, no para imparcialidad criptográfica.
  • Vulnerabilidad de Estado y Semilla: Los generadores PRNG lineales tienen un estado interno finito de 128 bits. Con un muestreo de apenas 2 a 5 valores generados en el navegador, un atacante o script automatizado puede resolver el sistema de ecuaciones algebraicas y deducir la semilla inicial, prediciendo con 100% de exactitud qué sectores de la ruleta resultarán premiados en las siguientes tiradas.
  • Agrupamientos y Falso Azar: En secuencias reducidas (como las 10 o 20 tiradas típicas de una clase escolar o un sorteo), Math.random() tiende a presentar agrupamientos locales que generan la falsa impresión de favoritismo hacia ciertas casillas.

2. Arquitectura de Entropía Hardware con Web Crypto API

Para garantizar la equidad matemática absoluta de cada tirada, nuestro motor invoca la función window.crypto.getRandomValues(new Uint32Array(1)). Este proceso se desglosa en cuatro etapas deterministas:

  1. Recolección de Entropía del Sistema: El navegador solicita al núcleo del sistema operativo (Linux /dev/urandom, Windows BCryptGenRandom o Apple SecRandomCopyBytes) un flujo de bits aleatorios recogidos de fuentes físicas impredecibles (ruido térmico del silicio, fluctuaciones en los tiempos de respuesta de hardware).
  2. Muestreo de 32 Bits: Se obtiene un entero sin signo de 32 bits en el rango cerrado [0, 232 - 1], lo que proporciona 4.294.967.296 estados equiprobables únicos.
  3. Normalización Continua: Se transforma el entero en un número de coma flotante continuo en el intervalo [0, 1) mediante la división normalizada:
    U = Uint32 / 232 = Uint32 / 4.294.967.296
  4. Mapeo Angular Físico: El ángulo final de giro se calcula sumando un número mínimo de rotaciones completas de inercia (5 × 2π) más el desplazamiento angular exacto 2π × U.

3. Prueba de Bondad de Ajuste Chi-Cuadrado (χ²)

Para auditar si la distribución de los ganadores en una ruleta de k sectores es rigurosamente uniforme, aplicamos la prueba de bondad de ajuste de Pearson formulada como:

χ² = ∑ (Oi - Ei)² / Ei

Donde Oi es la frecuencia observada del sector i, y Ei = N / k es la frecuencia teórica esperada bajo la hipótesis nula de perfecta equiprobabilidad.

Para una ruleta estándar de k = 8 opciones y una muestra de prueba de N = 10.000 giros, la frecuencia esperada para cada opción es de exactamente Ei = 1.250 apariciones. Con k - 1 = 7 grados de libertad y un nivel de significación estadística del 95% (α = 0.05), el valor crítico tabulado en la distribución Chi-cuadrado es:

χ²crítico (df = 7, α = 0.05) = 14.067

Si el valor calculado de χ² es inferior a 14.067, el test concluye formalmente con un valor p > 0.05: no existe desviación estadísticamente detectable y se ratifica la pureza del generador.

4. Compromiso de Código Abierto e Inspección en el Navegador

En ruleta-aleatoria.eu no ocultamos la lógica en servidores cerrados de backend: todo el motor de animación y cálculo se ejecuta abiertamente en el navegador del usuario. Puedes abrir las herramientas de desarrollo de tu navegador (F12 o Ctrl+Shift+I) y revisar en la pestaña Sources o Consola la implementación directa de nuestros scripts sin ofuscaciones maliciosas.

Te invitamos a probar nuestras diferentes modalidades operativas en la Ruleta Aleatoria Universal, consultar respuestas binarias en la Ruleta Sí o No o tirar dados físicos en nuestro Dado Virtual 3D.

Preguntas Frecuentes (FAQ)

¿Por qué no se debe usar Math.random() para sorteos y rifas oficiales?

Math.random() es un generador pseudoaleatorio no criptográfico (PRNG). En motores de navegación modernos como V8 (Google Chrome) utiliza el algoritmo Xoroshiro128+, el cual no está protegido contra ingeniería inversa. Un usuario que observe una secuencia de unas pocas decenas de números generados puede reconstruir matemáticamente el estado interno de la semilla y predecir los resultados subsiguientes, lo que invalida su uso en sorteos públicos o decisiones vinculantes.

¿De dónde extrae la entropía la API window.crypto.getRandomValues()?

La interfaz Web Crypto API se conecta directamente con los subsistemas criptográficos del sistema operativo (/dev/urandom en Linux y macOS, o BCryptGenRandom en Microsoft Windows). Estos subsistemas acumulan entropía continua procedente de eventos físicos no deterministas del ordenador o móvil: microfluctuaciones de los tiempos de interrupción del teclado, deriva térmica del reloj de la CPU y variaciones en los controladores de disco y red.

¿Qué significa que la prueba Chi-cuadrado tenga un p-valor mayor de 0.05?

En estadística inferencial, un p-valor superior a 0.05 (p > 0.05) indica que no hay evidencia estadística para rechazar la hipótesis nula de uniformidad. Significa que cualquier pequeña fluctuación en el número de veces que sale cada sector se debe exclusivamente a la varianza natural del azar y no a un sesgo o defecto del algoritmo.