Mire jó a véletlen?
- Szimuláció
- Játékok
- Hatékony "randomizált" algoritmusok
- Titkosítás
(Ál)véletlen számok előállítása(Ál)véletlen számokat előállító függvények programozási nyelvekben
Pascal
Java
C
C++
C#
Példák
Dobások összege
Egy hatoldalú dobókockával dobálunk, a dobott számokat összeadjuk. Mi a valószínűsége, hogy pont kijön a 100?
program kocka ;
var x , s : longint ;
begin
Randomize ; {mag beállítás}
s := 0 ;
while s < 100 do
begin
x := random ( 6 ) +1 ; {a random(6) 0 és 5 között ad értéket}
s := s + x ;
writeln ( x , ' ' , s );
end ;
if s = 100
then writeln ( 'Nyert' )
else writeln ( ':(' );
end .
Bolyongás
Egy pontszerű részecske mozog a koordinátasíkon. Minden időegységben
jobbra, balra, felfele vagy lefele lép egy egységet, egyenlő
valószínűséggel. Vizsgáljuk a részecske pályáját!
program brown ;
var x , y : integer ;
v : byte ;
i : integer ;
begin
x := 0 ; y := 0 ;
Randomize ;
for i := 1 to 10000 do
begin
v := random ( 4 );
if v = 0
then y := y + 1
else if v = 1
then x := x + 1
else if v = 2
then y := y - 1
else x := x - 1 ;
writeln ( x , ';' , y );
end ;
end .
Véletlen prím előállítása
Nagy prímek keresése. Véletlen számokat állítunk elő 1 millió és 2
millió között, és teszteljük őket, prímek-e. Az első prímnél megállunk.
Érdekes kérdés: átlagosan hányadik próbálkozásra kapunk prímet?
program vprim ;
var db , n , d : longint ;
van : boolean ;
begin
db := 0 ;
van := false ;
Randomize ;
while not van do
begin
db := db + 1 ;
n := Random ( 1000000 ) +1000000 ;
d := 2 ;
while ( d <= round ( sqrt ( n ))) and (( n MOD d ) <> 0 ) do
d := d + 1 ;
writeln ( db , '. lépés' );
if n MOD d = 0
then writeln ( n , ' NEM PRÍM' )
else begin writeln ( n , ' PRÍM' ); van := true ; end ;
end ;
end .
Lottó-számok sorsolása
Írjunk programot, ami igazságosan sorsol ki n szám közük k különbözőt!
program lotto ;
var n , k , sz , i : longint ;
begin
Randomize ;
n := 90 ; k := 5 ; sz := k ; i := 1 ;
while sz > 0 do
begin
if Random < sz / ( n - i +1 )
then begin
writeln ( i );
sz := sz - 1 ;
end ;
i := i + 1 ;
end ;
end .
|