Копирование с http://www.befria.nu/elias/pi/binpi.html, чтобы получить двоичное значение числа pi (чтобы было проще преобразовать в байты, чем пытаться использовать десятичные цифры), а затем запустить его через ent Я получаю следующее для анализа случайного распределения байтов:
Энтропия = 7,954093 бит на байт.
Оптимальное сжатие уменьшит размер этого файла размером 4096 байт на 0 процентов.
Распределение хи-квадрат для 4096 выборок составляет 253,00, и случайным образом будет превышать это значение в 52,36 процента раз.
Среднее арифметическое значение байтов данных составляет 126,6736 (127,5 = случайное число).
Значение Монте-Карло для Pi составляет 3,120234604 (ошибка 0,68 процента).
Коэффициент последовательной корреляции составляет 0,028195 (полностью некоррелированный = 0,0).
Так что да, использование pi для случайных данных даст вам довольно случайные данные ... понимая, что это хорошо известные случайные данные.
Из комментария выше ...
В зависимости от того, что вы делаете, но я думаю, вы можете использовать десятичные дроби квадратного корня любого простого числа в качестве генератора случайных чисел. Они должны по крайней мере иметь равномерно распределенные цифры. - Паксин
Итак, я вычислил квадратный корень из 2 в двоичном коде, чтобы устранить тот же набор проблем. Используя итерацию Вольфрама, я написал простой 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);
Выполнение этого для первых 10 соответствовало A095804, таким образом, я был уверен, что у меня была последовательность. Значение v n, как при записи в двоичном виде с двоичной точкой, помещенной после первой цифры, дает приблизительное значение квадратного корня из 2.
Использование ent против этих двоичных данных дает:
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).