A véletlenszám generátor

Feltételek

A fórum tilos:

Szabálysértőket fogják szigorúan bünteti adminisztrátor vagy egy moderátor, és lesznek teljesen férhetnek hozzá a fórumon.

Ezzel a fórum segítségével:

Ez a cikk fog beszélni részletesen a véletlen szám generátor (Megjegyzés. A helyes azt mondani, „pszeudo-véletlen szám”, mert senki algoritmus nem dolgoznak ki egy valóban véletlen szám, de az egyszerűség kedvéért azt kell hagyni a „pszeudo”). Elég gyakran programozási kell, hogy véletlen számokat tesz semmit. Először is, ez egy példa, hogy csoszogó kártyák kártyajáték, vagy például, a játék a „csont”, amely megkívánja a véletlen számok generálása dobott szimuláció „csont”. Példák önkényesen, különösen a számítógépes játékok.

Annak érdekében, hogy egy véletlen szám, persze, írás és funkcióját, és fel lehet használni, és standard könyvtár. Mi nem lesz veled „újra feltalálni a kereket”, és így fogjuk használni csak szabványos könyvtári funkciókat. Tehát a véletlen szám generálás C ++ segítségével rand () függvény. leírt stdlib.h könyvtárban. Hogyan működik, fontolja meg egy egyszerű példát.

Mint látható, minden egyszerű: csatlakoztassa a szükséges könyvtár, a előfeldolgozó irányelv #include és használja a rand () függvény a programban. Próbáld meg futtatni a programot, és látni dolgozott ki a számokat. Aztán megpróbálja futtatni a programot többször is. Akkor valószínűleg észrevette, hogy minden egyes alkalommal, amikor fut a rand () függvény generálja ugyanazt a számot. Igen, ez így igaz! De miért? Nézzük foglalkozni együtt.

Műszaki pontot. mert rand () - ez a funkció, akkor azt a saját prototípus (leírás), ami azt jelzi, hogy képes fogadni érvként (érvekkel), és visszaadja az eredményt. Itt van egy prototípus (megtalálja a saját és a stdlib.h fájlt, amely általában az include könyvtárba programozási környezet):

Mint látható, a függvény értéke (0-32767) paraméterként, akkor nem tud semmit, hogy a zárójelben mindig üres.

Mi továbbra is vizsgálja. Ahhoz, hogy megértsük, miért a rand () függvény mindig visszatér hozzánk, hogy ugyanazt a számot, meg benne. Ez az, amit látunk

Mi nem megy bele a részletekbe a kódot. Kivéve azt, hogy a kapott véletlen számot a függvény számától függ a kiindulási következő. amely, mint látod, van állítva. Ebből következik, hogy a számok mindig jön ki ugyanaz. A probléma elkerülése érdekében, egy pár a rand (), akkor kell használni srand () függvényt. Itt van egy prototípus

És itt van a belsejében

Mint látható, ez a funkció a rajtszám mellett, hogy hozzárendeli egy másik értéket, megkapjuk a függvény paraméterként. Elvileg ez a szám lehet manuálisan minden egyes alkalommal, például úgy,

Ebben az esetben a bevezetésével a különböző értékekhez magot. mi lesz különböző véletlenszerű értékeket a kimeneten. El tudod képzelni, hogy ez nem túl kényelmes. A legtöbb esetben, mivel az átviteli mennyiség srand () függvény segítségével a rendszer idő másodpercben. Egyetértenek abban, hogy ez a legjobb módja, mert Ez a szám mindig más, és ezért mi lesz a kilépés a rand () véletlen számokat.

Most meg kell gondolni, hogyan lehet átvinni a srand () függvény az aktuális rendszeridőt. És a válasz egyszerű: van egy könyvtári függvény time (). ismertetett a könyvtárban time.h. Itt van egy prototípus

Ne tegye ki a nevét, a típusát, a lehet egyenlővé a szokásos int. Annak érdekében, hogy ezt a funkciót, hogy visszatérjen az aktuális időt másodpercben (másodperc számít honnan 00:00:00), meg kell nevezni a NULL paraméter. Kiderülhet, mint ez

Most tekintsünk egy ilyen kérdés. Tegyük fel, hogy meg kell, hogy létrehoz egy szám nem az egész elfogadható, és csak bizonyos speciális, például 0-9 beleértve. Ahogy haladunk ebben az esetben? A rand () függvény saját szintaktikai

ahol egy - egy kiindulási pont, ahonnan indul a termelés,

b - egy eltolási értéket, amely meghatározza azt az intervallumot, amely generálását végezzük.

A mi esetünkben a = 0 (ez a szám befogadó), b = 10 (ez nem befogadó, mivel ez nem a végpont, és az eltolás értékét. Ha 0 elhalasztja 10 szám, akkor az utóbbinak az 9 beleértve). Ha az egyik volt, hogy létrehoz egy számot a tartományban, például 30-tól 50 befogadó, lenne olyan

Kísérletezni a fenti program, figyelje meg a kapott értékeket. Próbáld ki, hogy valamit a saját, hogy jobban megértsük a véletlen számok generálása a C ++. Azt is javasoljuk, kísérletezik hozzáadásával srand () clock () függvényt. Visszaadja a hozzávetőleges CPU időt dolgozik a program. Itt egy vonal

Bizonyos esetekben előfordulhat, hogy kap egy véletlen változó, de én személy szerint nem vette észre a különbséget elvileg.

Most még egy dolog: egyre negatív értékeket. Tegyük fel, hogy meg kell, hogy véletlenszerű értékek -100 és +100. A kódsort, amely felelős lesz a randomizálás

És az utolsó pont az, hogy a lebegőpontos számok, azaz frakcionált. Például, hogy a szám az intervallum 0,01 1. örvendő kód

A cikk végén levelet kis program arra kéri a felhasználót egy intervallum véletlen szám generátor, kitölti kapott értékek kétdimenziós tömb (mátrix), és megjeleníti a képernyőn

Itt az egyetlen megjegyzést a kód, amit be kell részletesen - egy string

mert a felhasználó sokkal kényelmesebb, hogy vezessenek be az alsó és felső randomizálás kódok, nem az összeg a váltás a második esetben teszünk néhány matematikai számítások. Tegyük fel, hogy a felhasználó belép a 10 és 20, végül megkapjuk kódsor

szükséges.

A program eredményeként

A véletlenszám generátor

Kapcsolódó cikkek