Excavando desde http://www.befria.nu/elias/pi/binpi.html para obtener el valor binario de pi (para que fuera más fácil convertirlo en bytes en lugar de intentar usar dígitos decimales) y luego ejecutarlo a través de ent Obtengo lo siguiente para un análisis de la distribución aleatoria de los bytes:
Entropía = 7.954093 bits por byte.
La compresión óptima reduciría el tamaño de este archivo de 4096 bytes en un 0 por ciento.
La distribución de chi cuadrado para 4096 muestras es 253.00, y aleatoriamente excedería este valor el 52.36 por ciento de las veces.
El valor medio aritmético de los bytes de datos es 126.6736 (127.5 = aleatorio).
El valor de Monte Carlo para Pi es 3.120234604 (error 0.68 por ciento).
El coeficiente de correlación serial es 0.028195 (totalmente no correlacionado = 0.0).
Entonces, sí, usar pi para datos aleatorios le daría datos bastante aleatorios ... al darse cuenta de que son datos aleatorios bien conocidos.
De un comentario arriba ...
Dependiendo de lo que esté haciendo, pero creo que puede usar los decimales de la raíz cuadrada de cualquier número primo como generador de números aleatorios. Estos deberían tener al menos dígitos distribuidos uniformemente. - Paxinum
Entonces, calculé la raíz cuadrada de 2 en binario para resolver el mismo conjunto de problemas. Usando la iteración de Wolfram, escribí un simple script en perl
#!/usr/bin/perl
use strict;
use Math::BigInt;
my $u = Math::BigInt->new("2");
my $v = Math::BigInt->new("0");
my $i = 0;
while(1) {
my $unew;
my $vnew;
if($u->bcmp($v) != 1) { # $u <= $v
$unew = $u->bmul(4);
$vnew = $v->bmul(2);
} else {
$unew = ($u->bsub($v)->bsub(1))->bmul(4);
$vnew = ($v->badd(2))->bmul(2);
}
$v = $vnew;
$u = $unew;
#print $i," ",$v,"\n";
if($i++ > 10000) { last; }
}
open (BITS,"> bits.txt");
print BITS $v->as_bin();
close(BITS);
Ejecutar esto durante los primeros 10 A095804 coincide, así que estaba seguro de que tenía la secuencia. El valor v n como cuando se escribe en binario con el punto binario colocado después del primer dígito da una aproximación de la raíz cuadrada de 2.
El uso de ent contra estos datos binarios produce:
Entropy = 7.840501 bits per byte.
Optimum compression would reduce the size
of this 1251 byte file by 1 percent.
Chi square distribution for 1251 samples is 277.84, and randomly
would exceed this value 15.58 percent of the times.
Arithmetic mean value of data bytes is 130.0616 (127.5 = random).
Monte Carlo value for Pi is 3.153846154 (error 0.39 percent).
Serial correlation coefficient is -0.045767 (totally uncorrelated = 0.0).