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