решил проверить чему будет равна вероятность бросания монеты используя perl+linux+/dev/random
ожидал что она с увеличением числа итераций будет все точнее приближаться к 0.5000000000000001.... или к 0.499999999999999999999.
но на самом деле даже при большом количестве испытаний вероятность довольно сильно скачет:
Код:
#!/usr/bin/perl
$total=1;
$tt=0;
open(FR,'</dev/urandom');
while (1) {
$g=getc(FR);
$r=(ord($g)+0)/255.0;
if ( $r > 0.5 ) {
$tt+=1;
}
printf("total: %d tt: %d p=%s\n",$total,$tt,$tt/$total) if $total%100000 == 0;
$total+=1;
}
пробовал на linux,solaris с ruby и perl - результат одинаков - стабильность только до4го знака.
...................................................................
total: 24400000 tt: 12199358 p=0.49997368852459
total: 24500000 tt: 12249208 p=0.499967673469388
total: 24600000 tt: 12299211 p=0.499967926829268
total: 24700000 tt: 12349160 p=0.499965991902834
total: 24800000 tt: 12399328 p=0.499972903225806
total: 24900000 tt: 12449338 p=0.499973413654618
total: 25000000 tt: 12499403 p=0.49997612
total: 25100000 tt: 12549564 p=0.499982629482072
total: 25200000 tt: 12599578 p=0.499983253968254
total: 25300000 tt: 12649923 p=0.499996956521739
total: 25400000 tt: 12699960 p=0.49999842519685
total: 25500000 tt: 12750156 p=0.500006117647059
total: 25600000 tt: 12800283 p=0.5000110546875
total: 25700000 tt: 12850340 p=0.500013229571984
total: 25800000 tt: 12900299 p=0.500011589147287
total: 25900000 tt: 12950054 p=0.500002084942085
total: 26000000 tt: 13000077 p=0.500002961538462
total: 26100000 tt: 13050041 p=0.500001570881226
...................................................................