Kaj je generator naključnih števil v C #?

Generator naključnih števil je vgrajena knjižnica v C #, ki naključno ustvari cela števila in številke s plavajočo vejico. Vsakič, ko se prikliče ustrezna metoda knjižnice, vrne naključno število. Niz naključnih števil je niz števil, ki ne sledijo nobenemu vzorcu. Generator naključnih števil v C # ponavadi ustvari takšno serijo, kadar se prikliče.

Naključni razred v C #

  • Kako torej C # ustvari niz naključnih števil? Odgovor se skriva v razredu naključnega imena v sistemu C # System.
  • Naključni razred je razred psevdo naključnih generatorjev. To pomeni, da mora ta razred ustvariti vrsto števil, ki ne sledijo nobenemu vzorcu. Toda, ali je stroj resnično sposoben ustvariti naključne številke? Kako bi stroj vedel, katero številko naj nato ustvari? Konec koncev je stroj zasnovan tako, da sledi navodilom in izvaja algoritme.
  • Ne, stroj ne more sam ustvariti naključnih števil. Obstaja določen matematični algoritem, ki temelji na trenutni uri in stanju stroja, ki ga vodi, da izbira številke iz niza. Vse številke v naboru imajo enako verjetnost, da bodo izbrane. Tako niso povsem naključni. Vseeno sledijo vzorcu. Samo, da je vzorec dovolj naključen, da ustreza praktičnim človeškim zahtevam.

Psevdo in varno

Naslednje vprašanje, ki vam pade na pamet, je, zakaj ga imenujejo psevdo naključni razred generatorja? Naj to razumemo s človeškim vedenjem v resničnem življenju. Ko človek prosi, da izbere naključno barvo, pobere določeno barvo. Recimo, da je izbral rumeno. Kaj je povzročilo, da je izbral rumeno? Lahko bi bila njegova najljubša barva ali barva njegove okolice ali pa je takrat morda razmišljal o nečem rumenem. To človeško vedenje, ki poganja odločitev, da nekaj naključno izberemo, se v svetu naključnosti imenuje seme. Seme je sprožilec ali začetna točka naključja.

Zdaj, ko je seme predvidljivo, naključna števila postanejo manj naključna. Nato jih imenujemo psevdo naključna števila. Ko so nepredvidljive, jih imenujemo varna naključna števila.

C # Random Class kot seme uporablja trenutni žig, kar je zelo predvidljivo. In od tod tudi izraz generator psevdo naključnih števil.

Razred RNGCryptoServiceProvider

Razred RNGCryptoServiceProvider iz imenskega prostora System.Security.Cryptography lahko ustvari varna naključna števila, ki jih lahko uporabimo kot gesla.

Funkcije generatorja naključnih števil v C #

Prva stvar, ki ustvari naključno število v C #, je inicializirati razred Random. To lahko stori kateri koli od obeh konstruktorjev razreda:

  • Random (): inicializira objekt razreda Random z uporabo časovne vrednosti semena. Vrednost semena je trenutni časovni žig stroja. Čeprav je bilo to v poznejših različicah spremenjeno v GUID.
  • Naključno (Int32): inicializira objekt razreda Random z uporabo podane vrednosti semena. Da dobimo naslednje naključno število iz niza, pokličemo metodo Next () razreda Random.
  • Naprej (): Vrne ne-negativno psevdo naključno celo število Int32.
  • Naprej (Int32): Vrne ne-negativno psevdo naključno celo število Int32, manjše od podanega celega števila.
  • Naprej (Int32, Int32): Vrne ne-negativno psevdo naključno celo število Int32 znotraj podanega obsega.

Celi generatorji naključnih števil v C #

Poglejmo primer, kako ustvariti naključna cela števila:

Primer # 1

Spodnji primer ustvari naključna števila Int32.

Koda:

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

Izhod:

Primer # 2

Spodnji primer ustvari naključna števila Int32 v območju od 0 do 100.

Koda:

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

Izhod:

Primer # 3

Spodnji primer ustvari naključna števila Int32 v območju od 50 do 100.

Koda:

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

Izhod:

Ustvari številke s plavajočo vejico

Poglejmo primer, kako ustvariti naključne številke s plavajočo vejico:

Primer # 1

Spodnji primer ustvari naključna števila Int32.

Koda:

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

Izhod:

Zelo pogosta napaka

Najpogostejša napaka, ki jo razvijalci storijo med generiranjem naključnih števil, je, da za vsako naključno število ustvarijo nov objekt Random Class. Kot je prikazano v spodnjem primeru:

Primer # 1

Koda:

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

Izhod:

Kako so naključne številke enake in zakaj se je to zgodilo?

Kot je razloženo pri delu razreda Random, ustvarjene številke temeljijo na vrednosti semena in trenutnem stanju stroja. Vsak primerek razreda Random se začne z začetno vrednostjo, shrani trenutno stanje in ga uporabi za ustvarjanje naslednjega naključnega števila. V zgornji kodi je bila napaka ustvarjanje novega primerka razreda Random pri vsaki ponovitvi zanke. Preden se čas notranje ure spremeni, se koda v celoti izvede in vsak primerek razreda Random se instancira z isto vrednostjo semena. Posledica tega je, da se vsakič ustvari isti niz številk.

Zaključek - Generator naključnih števil v C #

V tem članku smo izvedeli o generatorju naključnih števil v C # in kako interno deluje pri ustvarjanju naključnih števil. Na kratko smo spoznali tudi koncept psevdo naključnih in varnih naključnih števil. Te informacije zadostujejo, da razvijalci lahko v svojih aplikacijah uporabljajo razred Random. Globok potop, če vas zanima, če želite raziskati več naključnih številk za gesla in enkratnih gesel.

Priporočeni članki

To je vodnik za generator naključnih števil v C #. Tukaj razpravljamo o tem, kako deluje generator naključnih števil, koncept psevdo naključnih in varnih naključnih števil ter uporaba naključnega števila. Obiščite lahko tudi druge naše sorodne članke, če želite izvedeti več -

  1. Matematične funkcije v C #
  2. Destruktor v C #
  3. Povratna številka v Pythonu
  4. Spremenljivke v C #
  5. Spremenljivke v JavaScript
  6. Generator naključnih števil v Matlabu
  7. Različice Tableau
  8. Generator naključnih števil v JavaScript
  9. Generator naključnih števil v PHP