Hvad er Random Number Generator i C #?

En tilfældig talgenerator er et indbygget bibliotek i C #, der genererer heltal og flydende punkttal tilfældigt. Hver gang bibliotekets relevante metode påberåbes, returnerer det et tilfældigt tal. En række tilfældige tal er et sæt numre, der ikke følger noget mønster. Den tilfældige talgenerator i C # har en tendens til at generere en sådan serie, når der påberåbes.

Tilfældig klasse i C #

  • Så hvordan genererer C # en række tilfældige tal? Svaret ligger inden for tilfældig klasse i C # System-navneområdet.
  • Tilfældig klasse er en pseudo-tilfældig talgeneratorklasse. Dette betyder, at denne klasse har til opgave at generere en række numre, der ikke følger noget mønster. Men er en maskine virkelig i stand til at generere tilfældige tal? Hvordan ved maskinen, hvilket nummer der skal genereres næste? Når alt kommer til alt er maskinen designet til at følge instruktionerne og udføre algoritmer.
  • Nej, maskinen kan ikke generere tilfældige tal på egen hånd. Der er en defineret matematisk algoritme, der er baseret på maskinens aktuelle ur og tilstand, og som leder den til at vælge tal fra et sæt. Alle numrene i sættet har samme sandsynlighed for at blive plukket. Således er de ikke helt tilfældige. De følger et mønster. Det er bare det, at mønsteret er tilstrækkeligt tilfældigt til at imødekomme de praktiske menneskelige krav.

Pseudo og sikker

Det næste spørgsmål, der kommer til sindet, er, hvorfor kalder de det pseudo-tilfældigt talegeneratorklasse? Lad os forstå dette gennem menneskelig adfærd i virkeligheden. Når et menneske bliver bedt om at vælge en tilfældig farve, henter han en bestemt farve. Lad os sige, at han valgte Yellow. Hvad fik ham til at plukke gult? Det kunne være hans yndlingsfarve eller farven på hans omgivelser, eller han kunne have tænkt på noget gult på det tidspunkt. Denne menneskelige adfærd, der driver beslutningen om at vælge noget tilfældigt, kaldes frø i verden af ​​tilfældighedsnerv. Frøet er triggeren eller udgangspunktet for tilfældigheden.

Når frøet er forudsigeligt, bliver de tilfældige tal mindre tilfældige. De kaldes derefter pseudo-tilfældige tal. Når de er uforudsigelige, kaldes de sikre tilfældige tal.

C # Tilfældig klasse bruger den aktuelle tidsstempel som frø, hvilket er meget forudsigeligt. Og dermed udtrykket pseudo-tilfældigt talgeneratorklasse.

RNGCryptoServiceProvider Class

RNGCryptoServiceProvider-klassen fra System.Security.Cryptography-navneområdet er i stand til at generere sikre tilfældige tal, dem, der kan bruges som adgangskoder.

Tilfældige nummergeneratorfunktioner i C #

Den første ting at generere et tilfældigt tal i C # er at initialisere tilfældig klasse. Dette kan gøres af enhver af de to konstruktører i klassen:

  • Tilfældig (): Initialiserer et objekt fra tilfældig klasse ved hjælp af en tidsbaseret såværdi. Frøværdien er maskinens aktuelle tidsstempel. Selv i senere versioner blev dette ændret til at være GUID-baseret.
  • Tilfældig (Int32): Initialiserer et objekt i tilfældig klasse ved hjælp af den specificerede frøværdi . For at få det næste tilfældige tal fra serien, kalder vi Next () -metoden i tilfældig klasse.
  • Næste (): Returnerer et ikke-negativt pseudo-tilfældigt Int32-heltal.
  • Næste (Int32): Returnerer et ikke-negativt pseudo-tilfældigt Int32-heltal mindre end det specificerede heltal.
  • Næste (Int32, Int32): Returnerer et ikke-negativt pseudo-tilfældigt Int32-heltal inden for det specificerede interval.

Tilfældige talgenerator-tal i C #

Lad os se et eksempel på, hvordan man genererer tilfældige heltal:

Eksempel 1

Nedenstående eksempel genererer tilfældige Int32-numre.

Kode:

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

Produktion:

Eksempel 2

Nedenstående eksempel genererer tilfældige Int32-numre i området 0 til 100.

Kode:

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

Produktion:

Eksempel 3

Nedenstående eksempel genererer tilfældige Int32-numre i området 50 til 100.

Kode:

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

Produktion:

Generering af flydende numre

Lad os se et eksempel på, hvordan man genererer tilfældige flydende tal:

Eksempel 1

Nedenstående eksempel genererer tilfældige Int32-numre.

Kode:

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

Produktion:

En meget almindelig fejl

Den mest almindelige fejl, som udviklere begår, mens de genererer tilfældige tal, er, at de opretter et nyt objekt i tilfældig klasse for hvert tilfældigt tal. Som illustreret i eksemplet herunder:

Eksempel 1

Kode:

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

Produktion:

Hvordan tilfældige tal er de samme, og hvorfor skete dette?

Som forklaret i brugen af ​​tilfældig klasse er de genererede numre baseret på frøværdien og maskinens aktuelle tilstand. Ethvert tilfælde af tilfældig klasse starter med frøværdien, gemmer den aktuelle tilstand og bruger den til at generere det næste tilfældige tal. I koden ovenfor var fejlen at oprette en ny forekomst af tilfældig klasse i hver iteration af løkken. Så før tiden i det interne ur ændres, udføres koden fuldt ud, og hver forekomst af tilfældig klasse instantiseres med den samme frøværdi. Dette resulterer i det samme sæt numre, der genereres hver gang.

Konklusion - Tilfældig nummergenerator i C #

I denne artikel lærte vi om den tilfældige talgenerator i C #, og hvordan den internt fungerer til at generere tilfældige tal. Vi lærte også kort begrebet pseudo-tilfældige og sikre tilfældige tal. Denne information er tilstrækkelig til, at udviklere kan bruge tilfældig klasse i deres applikationer. Dyb dykke, hvis du er interesseret i at udforske mere om tilfældige tal for adgangskoder og engangsadgangskoder.

Anbefalede artikler

Dette er en guide til tilfældig nummergenerator i C #. Her diskuterer vi, hvordan Random Number Generator fungerer, begrebet pseudo-tilfældige og sikre-random-tal og brugen af ​​Random Number. Du kan også gennemgå vores andre relaterede artikler for at lære mere -

  1. Matematiske funktioner i C #
  2. Destructor i C #
  3. Omvendt nummer i Python
  4. Variabler i C #
  5. Variabler i JavaScript
  6. Tilfældig nummergenerator i Matlab
  7. Tableau-versioner
  8. Tilfældig nummergenerator i JavaScript
  9. Tilfældig nummergenerator i PHP

Kategori: