Scavando da http://www.befria.nu/elias/pi/binpi.html per ottenere il valore binario di pi (in modo che fosse più facile convertire in byte piuttosto che provare a usare cifre decimali) e quindi eseguirlo attraverso ent Ottengo quanto segue per un'analisi della distribuzione casuale dei byte:
Entropia = 7.954093 bit per byte.
La compressione ottimale ridurrebbe le dimensioni di questo file di 4096 byte dello 0 percento.
La distribuzione del chi quadrato per 4096 campioni è 253,00 e casualmente supererebbe questo valore il 52,36 percento delle volte.
Il valore aritmetico medio dei byte di dati è 126,6736 (127,5 = casuale).
Il valore Monte Carlo per Pi è 3,120234604 (errore 0,68 percento).
Il coefficiente di correlazione seriale è 0,028195 (totalmente non correlato = 0,0).
Quindi sì, l'uso di pi per dati casuali ti darebbe dati abbastanza casuali ... rendendoti conto che sono dati casuali ben noti.
Da un commento sopra ...
A seconda di cosa stai facendo, ma penso che puoi usare i decimali della radice quadrata di qualsiasi numero primo come generatore di numeri casuali. Questi dovrebbero almeno avere cifre distribuite uniformemente. - Paxinum
Quindi, ho calcolato la radice quadrata di 2 in binario per annullare lo stesso insieme di problemi. Usando Wolteram's Iteration ho scritto un semplice script 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);
In esecuzione questo per i primi 10 abbinati A095804, quindi ero sicuro di avere la sequenza. Il valore v n come quando è scritto in binario con il punto binario posizionato dopo la prima cifra fornisce un'approssimazione della radice quadrata di 2.
L'uso di ent contro questi dati binari 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).