Mi a véletlenszám-generátor a C # -ben?
A véletlenszám-generátor egy beépített C # könyvtár, amely véletlenszerűen egész számokat és lebegőpontos számot generál. Minden alkalommal, amikor a könyvtár releváns módszerére hivatkozik, véletlenszerű számot ad vissza. A véletlen számok sorozata olyan számok halmaza, amelyek semmilyen mintát nem követnek. A C # véletlenszám-generátorja hajlandó generálni egy ilyen sorozatot, amikor meghívják.
Véletlen osztály C # -ben
- Szóval, hogyan generálja a C # véletlen számok sorozatát? A válasz a C # rendszer névtér véletlenszerű osztályába esik.
- A véletlen osztály egy ál-véletlenszerű szám generátor osztály. Ez azt jelenti, hogy ennek az osztálynak a feladata egy sorozat létrehozása, amely nem követi semmilyen mintát. De vajon egy gép valóban képes-e véletlenszerű számokat generálni? Hogyan tudná a gép, hogy melyik számot generálja a következő? Végül is a gépet úgy tervezték, hogy az utasításokat kövesse és algoritmusokat hajtson végre.
- Nem, a gép önmagában nem tud véletlenszerű számokat generálni. Létezik egy meghatározott matematikai algoritmus, amely a gép aktuális óráján és állapotán alapul, és amely arra irányítja, hogy számot válasszon egy halmazból. A készletben szereplő összes szám azonos eséllyel felvehető. Így nem teljesen véletlenszerűek. Mintát követnek. Csak a minta kellően véletlenszerű, hogy megfeleljen a gyakorlati emberi követelményeknek.
Álneve és biztonságos
A következő felmerülő kérdés az, hogy miért hívják álnév-véletlenszám-generátor osztályt? Megértjük ezt a valós emberi viselkedés révén. Amikor egy embert felkérnek egy véletlenszerű szín kiválasztására, akkor kiválaszt egy bizonyos színt. Tegyük fel, hogy ő sárga színt választott. Mi miatt választott sárga? Lehet, hogy a kedvenc színe vagy a környéke színe, vagy gondolhatott valami sárgára. Ezt az emberi viselkedést, amely döntéshozatali döntése alapján véletlenszerűen választ, a Seednek nevezzük a véletlenszerű világban. A vetőmag a véletlenszerűség indítóje vagy kezdőpontja.
Most, amikor a vetőmag kiszámítható, a véletlen számok kevésbé véletlenszerűvé válnak. Ezeket azután ál-véletlenszerű számoknak nevezzük. Ha kiszámíthatatlan, akkor biztonságos véletlenszerű számoknak nevezzük.
A C # Random Class magként az aktuális időbélyegzőt használja, ami nagyon kiszámítható. És így az ál-véletlenszám-generátor osztály kifejezés.
RNGCryptoServiceProvider osztály
Az RNGCryptoServiceProvider osztály a System.Security.Cryptography névtérből biztonságos véletlenszerű számokat képes generálni, amelyeket jelszóként lehet használni.
Véletlenszám-generátor függvények a C # -ben
A C # -ben véletlenszerű szám előállításához az első lépés a Random osztály inicializálása. Ezt megteheti az osztály két kivitelezője:
- Random (): Inicializálja a Random osztály objektumát egy időalapú magérték felhasználásával. A vetőmag értéke a gép aktuális időbélyegzője. Bár a későbbi verziókban ezt GUID-alapúnak módosították.
- Véletlenszerű (Int32): Inicializálja a Véletlen osztály objektumát a megadott magérték alapján. A sorozat következő véletlen számának beszerzéséhez a Random osztály Next () módszerét hívjuk.
- Next (): Nem negatív ál-véletlenszerű Int32 egész számot ad vissza.
- Következő (Int32): Nem negatív ál-véletlenszerű Int32 egész értéket ad vissza, amely a megadott egésznél kisebb.
- Következő (Int32, Int32): Nem negatív ál-véletlenszerű Int32 egész számot ad vissza a megadott tartományon belül.
Véletlenszám-generátor egész szám C # -ben
Lássunk egy példát a véletlen egész számok előállítására:
1. példa
Az alábbi példa véletlenszerű Int32 számokat generál.
Kód:
using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static int GenerateRandomInt(Random rnd)
(
return rnd.Next();
)
)
Kimenet:
2. példa
Az alábbi példa véletlenszerű Int32 számokat generál a 0 és 100 közötti tartományban.
Kód:
using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static int GenerateRandomInt(Random rnd)
(
return rnd.Next(100);
)
)
Kimenet:
3. példa
Az alábbi példa véletlenszerű Int32 számokat generál az 50 és 100 közötti tartományban.
Kód:
using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static int GenerateRandomInt(Random rnd)
(
return rnd.Next(50, 100);
)
)
Kimenet:
Lebegőpontos számok előállítása
Lássunk egy példát a véletlenszerű lebegőpontos számok előállítására:
1. példa
Az alábbi példa véletlenszerű Int32 számokat generál.
Kód:
using System;
public class Program
(
public static void Main()
(
Random rnd = new Random();
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt(rnd));
)
public static double GenerateRandomInt(Random rnd)
(
return rnd.NextDouble();
)
)
Kimenet:
Nagyon gyakori hiba
A leggyakoribb hiba, amelyet a fejlesztők elkövetnek, amikor véletlen számokat generálnak, hogy minden véletlen számhoz új véletlenszerű objektumot hoznak létre. Az alábbi példa szerint:
1. példa
Kód:
using System;
public class Program
(
public static void Main()
(
for (int i = 0; i < 10; i++)
Console.WriteLine("Random number (0) : (1)", i + 1, GenerateRandomInt());
)
public static int GenerateRandomInt()
(
Random rnd = new Random(); //a very common mistake
return rnd.Next();
)
)
Kimenet:
Mennyire azonosak a véletlen számok, és miért történt ez?
Amint azt a Random Class munkája elmagyarázta, a generált számok a vetőmag értékén és a gép aktuális állapotán alapulnak. A Random osztály bármelyik példánya a vetőértékkel kezdődik, elmenti az aktuális állapotot, és felhasználja a következő véletlenszám előállítására. A fenti kódban a hiba az volt, hogy egy új példányt hozott létre a Random osztályból a hurok minden iterációjában. Tehát, mielőtt a belső órában szereplő idő megváltozik, a kód teljesen végrehajtásra kerül, és a Véletlen osztály minden példányát ugyanazzal a magértékkel valósítjuk meg. Ennek eredményeként ugyanaz a számkészlet jön létre minden alkalommal.
Következtetés - Véletlenszám-generátor C # -ben
Ebben a cikkben megismerkedtünk a C # -ben található véletlenszám-generátorral és hogyan működik belsőleg a véletlenszámok generálásakor. Röviden megismertük az ál-véletlen és biztonságos-véletlen szám fogalmát is. Ez az információ elegendő ahhoz, hogy a fejlesztők a Random osztályt alkalmazhassák alkalmazásukban. Mély merülés, ha érdekli, hogy részletesebben megismerje a jelszavak és az egyszeri jelszavak véletlen számát.
Ajánlott cikkek
Ez egy útmutató a C # véletlenszám-generátorához. Itt megvitassuk a véletlenszám-generátor működését, az ál-véletlen és biztonságos-véletlen szám fogalmát és a véletlen szám használatát. Megnézheti más kapcsolódó cikkeket is, ha többet szeretne megtudni -
- C matematikai funkciók
- Romboló C # -ben
- Fordított szám Pythonban
- Változók a C # -ben
- Változók a JavaScript-ben
- Véletlenszám-generátor a Matlab-ban
- Tableau verziók
- Véletlenszám-generátor a JavaScript-ben
- Véletlenszám-generátor a PHP-ben