Uno de los problemas de tener un generador de números que parecen aleatorios es estar seguro de si lo son. Hay que tener en cuenta que hablamos de números aleatorios justos, donde todos sean igual de probables, en este caso de números binarios que con un 50% salga 0 o 1 (existen formas de asegurarse de que una fuente aleatoria es justa). Vamos a ver el test de rachas para validar la aleatoriedad.
Test de rachas
En el caso de números binarios este test es muy fácil de entender, contamos el número de rachas que hay en los datos. ¿Qués un racha? Cada vez que un valor es distinto que el valor anterior. Por ejemplo:
00110101100111100
Si lo separamos en rachas:
00 – 11 – 0 – 1 – 0 – 11 – 00 – 1111 – 00
Ahora contamos las rachas, los ceros y los unos. En este caso hay 9 rachas, 8 ceros y 9 unos.
Si el número de rachas es R, el número de ceros es n0, el de uno es n1 y n = n0+n1.
media => u = (2*n0 *n1 / n) + 1
varianza => var = 2*n0*n1*(2*n0*n1-n) / n² * (n-1)
desviación típica => des = sqrt(var)
Z = R + c – u / des
Si R > u → c = -0,5
Si R < u → c = 0,5
El resultado es el Z score. Podemos usar tablas para saber su valor pero si queremos tener una buena aproximación con una seguridad del 95% de que es una distribución aleatoria no puede ser mayor de 1.6 ni menor de -1.6.
R = 9
n0 = 8
n1 = 9
n = 17
u = (298 / 17) +1 = 9,47
var = 298 * (298-17) / 17² * (17-1) = 18,10
des = 4,25
Z = 9 – 0,5 – 9,47 / 4,25 = -0,22
-0,22 esta entre 1.6 y -1.6 con lo cual lo consideraríamos como aleatorio.