X-Ftn-To: Damir Orlic
Damir Orlic wrote:
>>Meni se ta zakonitost cinila krajnje dvojbenom pa sam isao isprobati
>>(Borland Pascal 7), mijenjati vrijednosti (recimo staviti 999999
>>umjesto 100000), dizati na jako velike brojeve, spustati na jako male,
>>i vrijednost se kretala izmedju 32 i 37 %, pa mi se cini da nekakva
>
>To su ti oscilacije isle prema 32% i 37% kada si stavljao male
>brojeve? Za velike brojeve je bilo blizu 35%. Da si se igrao
>prosirenja na longint tip brzo bi se priblizio 31%. Sto veci broj
>(umjesto 30000) to blize pravom rjesenju. :-)
Napisao sam sinoc potpuno novi program koji to racuna, i on daje
vrijednosti koje se krecu oko 17%. Promijenjen je algoritam za
slucajne brojeve (uzme ono sto kanta odredi kao slucajni broj, i to
onda "malo korigira" - doda jednu i oduzme drugu vrijednost slucajno
odabrane memorijske lokacije (word size, randomizirani segment i
offset). Isto tako odredjujem prvu znamenku na malo drugaciji nacin.
;)
Vjerojatnost pojave znamenki izracunata malo modificiranom verzijom
programa (koji gleda sve, a ne samo jedinice) je (za 10^6 pokusaja):
1: 17.00%
2: 17.00%
3: 16.92%
4: 16.96%
5: 16.99%
6: 10.06%
7: 1.68%
8: 1.69%
9: 1.69%
---
Dakle ocito mi brojevi nisu pretjerano slucajni, i krecu se u takvom
rasponu da su znamenke 7, 8 i 9 bitno manje vjerojatne, 6 je nesto
manje vjerojatna, ali sve ostale su rasporedjene manje-vise
ravnomjerno.
--
program raspodjela;
uses crt;
const top = 1000000;
var l,n, count: longint;
s: string[1];
function rnd(max: word): longint;
begin
rnd:=random(max)+memw[random(max):random(max)]-memw[random(max):random(max)];
end;
begin
randomize;
count:=0;
for l:=1 to top do
begin
n:=rnd(65000);
str(n:1, s);
if s[1]='1' then inc(count);
end;
writeln(count/top*100:5:2,'%');
end.
--
Web (Kundalini-yoga): http://danijel.cjb.net
|