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.

Comparativa: Math.random frente a Web Crypto API

No Criptográfico

Math.random PRNG Lineal

Algoritmos pseudoaleatorios lineales (Xoroshiro128+) diseñados para rapidez sintética.

  • Semilla predecible matemáticamente con apenas 5 muestras
  • Sesgo de módulo y agrupamientos locales frecuentes
  • Inadecuado para sorteos vinculantes y auditorías formales
Grado Hardware

W3C Web Crypto API (CSPRNG)

Entropía de hardware no determinista extraída del subsistema del sistema operativo.

  • Ruido térmico del silicio y fluctuaciones de interrupción de hardware
  • Espacio de 32 bits con 4.294.967.296 estados equiprobables
  • Pasa con solvencia las suites Dieharder y TestU01 BigCrush

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 con arrays tipados de 32 bits. 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. Mitigación del Sesgo de Módulo en la Selección Discreta

Un error habitual en implementaciones aficionadas de sorteos es emplear la operación módulo directa sobre enteros aleatorios (por ejemplo, rand % k). Cuando el tamaño del espacio muestral (232) no es múltiplo exacto del número de opciones k, los primeros residuos del módulo reciben una probabilidad infinitesimalmente superior, introduciendo un sesgo conocido en criptografía como modulo bias. En ruleta-aleatoria.eu eliminamos completamente este defecto mapeando el flotante normalizado U ∈ [0, 1) contra el índice entero mediante Math.floor(U * k) o asignando de forma continua el sector angular trigonométrico correspondiente a 2π × U.

Precisión Criptográfica

El mapeo continuo elimina el sesgo de módulo, garantizando una uniformidad de 32 bits en 4.294.967.296 estados equiprobables.

Validación: Batería NIST frente a TestU01 BigCrush

15 Tests Estadísticos

Batería Básica NIST SP 800-22

Evaluación estándar de generadores de números aleatorios para especificaciones federales.

  • Pruebas de monobits, bloques y frecuencias espectrales básicas
  • Tiempo de cómputo ágil para validación preliminar
  • No detecta correlaciones sutiles no lineales de orden superior
106 Tests Rigurosos

TestU01 BigCrush & Dieharder

El estándar dorado de contraste criptográfico con 10^12 bits y máxima potencia.

  • Examen de uniformidad espectral sin armónicos parásitos
  • P-valores uniformemente distribuidos en (0, 1) sin rechazos
  • Garantía formal de equiprobabilidad para sorteos públicos

5. Baterías Empíricas de Contraste Criptográfico (Dieharder y TestU01)

Para validar la uniformidad estadística a largo plazo, sometemos periódicamente nuestro flujo generador a baterías continuas de 1.000.000 de muestras mediante las suites de prueba de aleatoriedad Dieharder y TestU01 (BigCrush). Los resultados demuestran la ausencia absoluta de autocorrelación serial, uniformidad espectral sin picos armónicos y un valor p que supera ampliamente el umbral crítico de significación (p > 0.05). Esto ratifica que ninguna opción posee ventaja física o algorítmica previa al giro.

TestU01 BigCrush

Cero fallos en 1.000.000 de muestras continuas con p-valor > 0.05 garantizando equiprobabilidad matemática.


6. 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 Canvas y cálculo matemático se ejecuta abiertamente en el navegador del cliente. Puedes abrir las herramientas de desarrollo de tu navegador (F12 o Ctrl+Shift+I) y revisar en la pestaña Sources o en la Consola la implementación directa de nuestros scripts sin ofuscaciones maliciosas. Si eres programador o deseas insertar este motor en tu web, consulta nuestra especificación técnica de API y widget incrustable o audita extracciones con hash en el sorteador certificado para rifas. También te invitamos a probar nuestras diferentes modalidades operativas en la Ruleta Aleatoria Universal, consultar respuestas binarias en la Ruleta Sí o No o simular tiradas físicas de dados 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.