Kihagyás

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:

Random veletlen = new Random();

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:

veletlenSzam = veletlen.Next(100);

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:

  1. veletlenSzam = veletlen.Next(101) - 50;

  2. 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();
}
(Megfigyelhető, hogy az 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( ... );