Mis on juhuslike arvude generaator C # -s?

Juhuslike arvude generaator on sisseehitatud raamatukogu C # -s, mis genereerib täisarvu ja ujukomaarvu juhuslikult. Iga kord, kui käivitatakse raamatukogu asjakohane meetod, tagastab see juhusliku arvu. Juhuslike arvude seeria on numbrite kogum, mis ei järgi ühtegi mustrit. C # juhuslike arvude generaator kipub sellist seeriat genereerima alati, kui käivitatakse.

Juhuslik klass C-klassis

  • Niisiis, kuidas C # genereerib juhuslike arvude seeria? Vastus asub C # süsteemi nimeruumi juhuslikus klassis.
  • Juhuslik klass on pseudojuhuslike arvude generaatori klass. See tähendab, et selle klassi ülesandeks on genereerida numbriseeria, mis ei järgi ühtegi mustrit. Kuid kas masin on tõesti võimeline genereerima juhuslikke numbreid? Kuidas teaks masin, millise numbri järgmine genereerida? Lõppude lõpuks on masin loodud järgima juhiseid ja täitma algoritme.
  • Ei, masin ei saa juhuslikke numbreid iseseisvalt genereerida. Seal on määratletud matemaatiline algoritm, mis põhineb masina praegusel kellal ja olekul, mis juhendab seda numbrite valimiseks komplektist. Kõigil komplekti numbritel on võrdne tõenäosus, et neid korjatakse üles. Seega pole need täiesti juhuslikud. Nad järgivad mustrit. See on lihtsalt nii, et muster on piisavalt juhuslik, et see vastaks praktilistele inimnõuetele.

Pseudo ja turvaline

Järgmine küsimus, mis pähe tuleb, on see, miks nad nimetavad seda pseudojuhuslike arvude generaatori klassiks? Mõistagem seda inimese reaalse elu kaudu. Kui inimesel palutakse valida juhuslik värv, valib ta teatud värvi. Ütleme nii, et ta valis Kollase. Mis pani ta valima kollase? See võib olla tema lemmikvärv või ümbruse värv või ta oleks võinud omal ajal mõelda millelegi kollasele. Seda inimkäitumist, mis ajendab otsust midagi juhuslikult valida, nimetatakse juhusliku maailma seemneks. Seeme on juhuslikkuse käivitaja või alguspunkt.

Nüüd, kui seeme on etteaimatav, muutuvad juhuslikud arvud vähem juhuslikuks. Neid nimetatakse siis pseudojuhuslikeks numbriteks. Kui need on ettearvamatud, nimetatakse neid turvalisteks juhuslikeks numbriteks.

C # Random Class kasutab seemnena praegust ajatemplit, mis on väga palju etteaimatav. Ja seega ka mõiste pseudojuhuslike arvude generaatori klass.

RNGCryptoServiceProvider klass

RNGCryptoServiceProvider klassi süsteemist System.Security.Cryptography nimeruum on võimeline genereerima turvalisi juhuslikke numbreid, neid saab kasutada paroolidena.

Juhuslike arvude generaatori funktsioonid C ​​# -s

C-s juhusliku arvu genereerimise esimene asi on juhusliku klassi initsialiseerimine. Seda saab teha ükskõik milline klassi kahest konstruktorist:

  • Juhuslik (): lähtestab klassi Juhuslik objekt, kasutades ajapõhist seemne väärtust. Seemne väärtus on masina praegune ajatempel. Ehkki hilisemates versioonides muudeti see GUID-põhiseks.
  • Juhuslik (Int32): lähtestab klassi Juhuslik objekt, kasutades määratud seemneväärtust. Seeriast järgmise juhusliku numbri saamiseks kutsume juhusliku klassi meetodit Next ().
  • Järgmine (): Tagastab mittenegatiivse pseudojuhusliku täisarvu Int32.
  • Järgmine (Int32): Tagastab mittenegatiivse pseudojuhusliku täisarvu Int32, mis on väiksem kui määratud täisarv.
  • Järgmine (Int32, Int32): tagastab mitte-negatiivse pseudo-juhusliku Int32 täisarvu määratud vahemikus.

Juhuslike arvude generaatori täisarvud numbris C

Vaatame näidet juhuslike täisarvude genereerimiseks:

Näide nr 1

Allpool toodud näide genereerib juhuslikud Int32 numbrid.

Kood:

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();
)
)

Väljund:

Näide 2

Allpool toodud näide genereerib juhuslikud Int32 numbrid vahemikus 0 kuni 100.

Kood:

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);
)
)

Väljund:

Näide 3

Allpool toodud näide genereerib juhuslikud Int32 numbrid vahemikus 50 kuni 100.

Kood:

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);
)
)

Väljund:

Ujukoma numbrite genereerimine

Vaatame näidet juhuslike ujukomaarvude genereerimiseks:

Näide nr 1

Allpool toodud näide genereerib juhuslikud Int32 numbrid.

Kood:

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();
)
)

Väljund:

Väga tavaline viga

Kõige tavalisem viga, mida arendajad juhuslike arvude genereerimisel teevad, on see, et iga juhusliku arvu jaoks loovad nad uue juhusliku klassi objekti. Nagu on illustreeritud allpool toodud näites:

Näide nr 1

Kood:

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();
)
)

Väljund:

Kui juhuslikud numbrid on kõik ühesugused ja miks see juhtus?

Nagu juhusliku klassi töös selgitatud, põhinevad genereeritud numbrid seemne väärtusel ja masina hetkeseisul. Iga juhusliku klassi esinemisjuht algab seemne väärtusega, salvestab praeguse oleku ja kasutab seda järgmise juhusliku arvu genereerimiseks. Ülaltoodud koodis oli viga uue juhusliku klassi esinemisjuhu loomiseks igas silmuse iteratsioonis. Niisiis, enne kui sisemine kellaaeg muutub, on kood täielikult käivitatud ja kõik juhusliku klassi eksemplarid saavad algväärtuse sama algväärtusega. Selle tulemuseks on iga kord sama numbrite komplekt.

Järeldus - juhuslike arvude generaator C-numbris

Selles artiklis õppisime C # juhuslike arvude generaatori kohta ja kuidas see sisemiselt juhuslike arvude genereerimiseks töötab. Samuti õppisime põgusalt pseudojuhuslike ja turvaliste juhuslike arvude mõistet. See teave on piisav, et arendajad saaksid kasutada juhuslikku klassi oma rakendustes. Kui soovite, uurige sügavamalt paroolide ja ühekordsete paroolide juhuslike numbrite kohta.

Soovitatavad artiklid

See on juhend juhuslike arvude generaatorisse C # -s. Siin käsitleme juhuslike arvude generaatori tööd, pseudojuhuslike ja turvaliste juhuslike numbrite kontseptsiooni ning juhusliku arvu kasutamist. Lisateavet leiate ka meie muudest seotud artiklitest -

  1. C-matemaatika funktsioonid
  2. C-tüüpi hävitaja
  3. Pöördnumber Pythonis
  4. Muutujad C-numbris
  5. Muutujad JavaScriptis
  6. Juhuslike arvude generaator Matlabis
  7. Tableau versioonid
  8. Juhuslike arvude generaator JavaScriptis
  9. Juhuslike arvude generaator PHP-s

Kategooria: