2.10. Véletlen számok előállítása
Az életben előforduló esetek szimulálására gyakran használunk véletlen számokat. Az előre nem látható események bizonyos valószínűséggel történő bekövetkezése a véletlen számok segítségével könnyen kezelhető. Az időjárás előrejelző programok és a szerencsejátékok használják ezt a módszert. A különböző programnyelvek hasonló módon alkalmazzák a véletlen számok előállítását.
A C# a Random utasítást (osztályt) használja a véletlen szám előállítására az alábbi módon:
Ekkor a veletlenSzam nevű változó egész számot vehet fel értékül a következő utasítás segítségével:
Itt a veletlenSzam csak egész típusú változó lehet, melynek legkisebb értéke 0, legnagyobb pedig 99 lehet. A 100 az előállítható számok darabszámát adja meg, ezért 0-ról indulva mindig a zárójelben megadott érték $- 1$ lehet a legnagyobb szám.
Negatív számok előállítása
Ha negatív számokat is elő szeretnénk állítani, arra két mód is van:
-
veletlenSzam = veletlen.Next(101) - 50; -
veletlenSzam = veletlen.Next(-50, 51);
Mindkét esetben a veletlenSzam a [-50, 50] intervallumból vesz fel értéket.
Megjegyzés
Az első módszer megfelelő átalakítással lehetővé teszi nem egész számok véletlenszerű előállítását is, meghatározott tizedes jegyig. Itt már vigyázni kell a változó deklarációjával is.
11. feladat
Állítsunk elő véletlenszerűen két egész számot a [0, 10] tartományból, és írjuk ki a számokat a képernyőre, majd azt, hogy melyik szám a nagyobb! Ha egyenlők, írjuk ki: "A két szám egyenlő"! Név: Véletlen1.
Megoldás:
static void Main(string[] args)
{
int a = 0, b = 0;
Random vsz = new Random();
Console.WriteLine("Két szám vizsgálata");
Console.WriteLine();
a = vsz.Next(11);
b = vsz.Next(11);
Console.WriteLine("a = {0}", a);
Console.WriteLine("b = {0}", b);
if (a > b)
Console.WriteLine("A(z) {0} nagyobb, mint {1}", a, b);
else if (a < b)
Console.WriteLine("A(z) {0} nagyobb, mint {1}", b, a);
else
Console.WriteLine("A két szám egyenlő");
Console.ReadKey();
}
if és az else után is csak 1 utasítás van, ezért a {} zárójelek elhagyhatók.)
12. feladat
Állítsunk elő véletlenszerűen egy egész számot az [1, 10]-ből, és írjuk ki, hogy a szám páros-e vagy páratlan! Név: Véletlen2.
Megoldás:
static void Main(string[] args)
{
int szam = 0;
Random vsz = new Random();
szam = vsz.Next(10) + 1;
if (szam % 2 == 0)
Console.WriteLine("{0} : A szám páros", szam);
else
Console.WriteLine("{0} : A szám páratlan", szam);
Console.ReadKey();
}
Gyakorló feladatok
Egészítsük ki a következő programsorokat a példához hasonlóan!
Példa: Állítsunk elő egész számokat véletlenszerűen az [1, 60]-ból!
`szam = vsz.Next(60) + 1;` vagy `szam = vsz.Next(1, 61);`
1.Állítsunk elő egész számokat véletlenszerűen a [0, 60]-ból!
szam = vsz.Next( ... ); vagy szam = vsz.Next( ... );
2.Állítsunk elő egész számokat véletlenszerűen a [-100, 100]-ból!
szam = vsz.Next( ... ); vagy szam = vsz.Next( ... );
3.Állítsunk elő egész számokat véletlenszerűen a [15, 80]-ból!
szam = vsz.Next( ... ); vagy szam = vsz.Next( ... );
4.Állítsunk elő egész számokat véletlenszerűen a [-15, -5]-ből!
szam = vsz.Next( ... ); vagy szam = vsz.Next( ... );