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 -

  1. C matematikai funkciók
  2. Romboló C # -ben
  3. Fordított szám Pythonban
  4. Változók a C # -ben
  5. Változók a JavaScript-ben
  6. Véletlenszám-generátor a Matlab-ban
  7. Tableau verziók
  8. Véletlenszám-generátor a JavaScript-ben
  9. Véletlenszám-generátor a PHP-ben

Kategória: