|
|
Pascal - random
|
12.10.2010 20:40
Michaela Jírů
|
Ahoj, s pascalem začínám a dostala jsem se k problému, kdy jsem potřebovala generovat nádodná čísla. použila jsem tedy uses crt, randomize a nakonec random (6). \program ale neházel výsledky, jaké jsem očekávala. Nechala jsem si tedy vypsat 10 těchto náhodně generovaných čísel a výsledkem bylo například : 1222222220, prostě jedna cifra se vždy několikrát opakovala. Tak by mě zajímalo, jestli je chyb na straně mé a použití randomu není tak snadné, jak jsem očekávala, nebo jestli je tohle normální?Díky
|
|
|
Re: Pascal - random
|
14.10.2010 16:50
Aleš Hakl
|
Na jake platforme a kompilatoru? Muzete ukazat kompletni zdrojovy kod?
To ze random vraci relativne dlouhe sekvence stejnych cisel jeste nemusi nutne znamenat, ze nevraci nahodna cisla. Naopak sekvence cisel, ktere nejsou nahodna, ale nekdo chce aby tak vypadali se daji poznat podle toho, ze dlouhe sekvence stejnych cislic neobsahuji.
Jinak randomize je treba volat idealne jenom jednou na zacatku programu, ne pred kazdym volanim random (kdyz jej budete volat pokazde, tak vam random bude vracet stale totez cislo, pro nejakou hodnotu "stale", treba mikrosekundu). Jinak vystup z random nikdy nejsou zrovna dobra nahodna cisla a hodi se tak na hry a podobna nenarocna vyuziti. |
|
|
Re: Pascal - random
|
15.10.2010 19:51
Michaela Jírů
|
Nevím, co myslíte platformou, ale zkusím odpovědět, že mám Widows XP, překladč Free Pascal. Dostala jsem ve škole úkol naprogramovat program, který vypočte, za kolik hodů průměrně padne šestka. Zdrojový kód:
program kostka;
uses crt;
var hod, soucet, pokus, pocet, i : integer;
prumer : real;
begin
soucet:=0;
pokus:=0;
pocet:=0;
hod:=0;
prumer:=0;
for i:= 1 to 30000 do
begin
randomize;
hod:= random (6);
writeln (hod);
if hod<>5 then pocet := pocet+1
else
begin
pocet:=pocet+1;
soucet:=soucet + pocet;
pokus:=pokus+ 1;
pocet:=0;
end;
end;
prumer:=soucet/pokus;
writeln ('průměrný počet hodů je' , prumer);
readkey;
end.
|
|
|
Re: Pascal - random
|
16.10.2010 11:21
Radim Kolář
|
to randomize nesmi byt uvnitr for cyklu |
|
|
Re: Pascal - random
|
16.10.2010 13:02
Jan Němec
|
program kostka;
uses crt;
var hod, soucet, pokus, pocet, i : integer;
prumer : real;
begin
soucet:=0;
pokus:=0;
pocet:=0;
hod:=0;
prumer:=0;
randomize;
for i:= 1 to 30000 do
begin
hod:= random (6);
writeln (hod);
if hod<>5 then pocet := pocet+1
else
begin
pocet:=pocet+1;
soucet:=soucet + pocet;
pokus:=pokus+ 1;
pocet:=0;
end;
end;
prumer:=soucet/pokus;
writeln ('průměrný počet hodů je' , prumer);
readkey;
end. |
|
|
Re: Pascal - random
|
18.10.2010 21:28
Michaela Jírů
|
Chtěla bych moc poděkovat, program jsem upravila a už funguje podle mých představ. |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|