Vad är slumptalgenerator i C #?

En slumptalsgenerator är ett inbyggt bibliotek i C # som genererar heltal och flyttalsnummer slumpmässigt. Varje gång bibliotekets relevanta metod åberopas returnerar det ett slumpmässigt nummer. En serie slumpmässiga nummer är en uppsättning siffror som inte följer något mönster. Slumptalsgeneratorn i C # tenderar att generera en sådan serie när som helst åberopas.

Slumpmässig klass i C #

  • Så, hur genererar C # en serie slumpmässiga nummer? Svaret ligger inom den slumpmässiga klassen i C # System-namnområdet.
  • Slumpmässig klass är en pseudo-slumpmässig talgeneratorklass. Detta betyder att den här klassen har till uppgift att generera en serie nummer som inte följer något mönster. Men är en maskin verkligen kapabel att generera slumpmässiga nummer? Hur skulle maskinen veta vilket nummer som ska genereras nästa? Maskinen är ju utformad för att följa instruktioner och utföra algoritmer.
  • Nej, maskinen kan inte generera slumpmässiga nummer på egen hand. Det finns en definierad matematisk algoritm, baserad på maskinens aktuella klocka och tillstånd, som leder den till att välja nummer från en uppsättning. Alla siffror i uppsättningen har lika stor sannolikhet för att plockas upp. Således är de inte helt slumpmässiga. De följer ett mönster. Det är bara att mönstret är tillräckligt slumpmässigt för att uppfylla de praktiska mänskliga kraven.

Pseudo och säker

Nästa fråga som kommer till minnet är varför kallar de det pseudo-slumpmässigt antal generatorklass? Låt oss förstå detta genom verkligt mänskligt beteende. När en människa blir ombedd att välja en slumpmässig färg, plockar han upp en viss färg. Låt oss säga att han valde Yellow. Vad fick honom att plocka gult? Det kan vara hans favoritfärg eller färgen i hans omgivning, eller han kunde ha tänkt på något gult vid den tiden. Detta mänskliga beteende som driver beslutet att välja något slumpmässigt kallas fröet i världen av slumpmässighet. Fröet är utlösaren eller startpunkten för slumpmässigheten.

När fröet är förutsägbart blir slumpmässiga nummer mindre slumpmässiga. De kallas sedan pseudo-slumpmässiga nummer. När de är oförutsägbara kallas de säkra slumpmässiga nummer.

C # Random Class använder den aktuella tidsstämpeln som frö, vilket är mycket förutsägbart. Och därmed termen pseudo-slumpmässigt antal generatorklass.

RNGCryptoServiceProvider Class

RNGCryptoServiceProvider-klassen från System.Security.Cryptography-namnutrymmet kan generera säkra slumpmässiga nummer, de som kan användas som lösenord.

Slumpmässiga nummergeneratorfunktioner i C #

Det första att generera ett slumptal i C # är att initiera slumpmässigt klassen. Detta kan göras av någon av de två konstruktörerna i klassen:

  • Slumpmässigt (): Initierar ett objekt i slumpmässigt klass med ett tidsbaserat frövärde. Frövärdet är maskinens aktuella tidsstämpel. Även om det i senare versioner ändrades till att vara GUID-baserat.
  • Slumpmässigt (Int32): Initierar ett objekt i klassen Slumpmässigt med det angivna frövärdet. För att få nästa slumpmässiga nummer från serien, kallar vi metoden Next () i slumpmässiga klassen.
  • Nästa (): Returnerar ett icke-negativt pseudo-slumpmässigt Int32-heltal.
  • Nästa (Int32): Returnerar ett icke-negativt pseudo-slumpmässigt Int32-heltal mindre än det angivna heltalet.
  • Nästa (Int32, Int32): Returnerar ett icke-negativt pseudo-slumpmässigt Int32-heltal inom det angivna intervallet.

Slumpmässiga talgenerator i C #

Låt oss se ett exempel på hur man skapar slumpmässiga heltal:

Exempel 1

Exemplet nedan genererar slumpmässiga Int32-nummer.

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

Produktion:

Exempel 2

Exemplet nedan genererar slumpmässiga Int32-nummer i intervallet 0 till 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);
)
)

Produktion:

Exempel 3

Exemplet nedan genererar slumpmässiga Int32-nummer i intervallet 50 till 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);
)
)

Produktion:

Generera flyttalnummer

Låt oss se ett exempel på hur man genererar slumpmässiga flytpunktsnummer:

Exempel 1

Exemplet nedan genererar slumpmässiga Int32-nummer.

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

Produktion:

En mycket vanlig misstag

Det vanligaste misstaget som utvecklarna begår när de skapar slumpmässiga nummer är att för varje slumpmässigt antal skapar de ett nytt objekt av slumpmässig klass. Som illustreras i exemplet nedan:

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

Produktion:

Hur slumpmässiga siffror är desamma och varför hände detta?

Som förklarats i arbetet med slumpmässig klass baseras de genererade siffrorna på utsädesvärdet och maskinens nuvarande tillstånd. Alla instanser av slumpmässig klass börjar med frövärdet, sparar det aktuella tillståndet och använder det för att generera nästa slumpmässiga nummer. I koden ovan var misstaget att skapa en ny instans av klassen Random i varje iteration av slingan. Så innan tiden i den interna klockan ändras utförs koden fullständigt och varje instans av slumpmässig klass instanseras med samma frövärde. Detta resulterar i samma uppsättning nummer som genereras varje gång.

Slutsats - Slumptalgenerator i C #

I den här artikeln lärde vi oss om slumptalsgeneratorn i C # och hur den internt fungerar för att generera slumpmässiga nummer. Vi lärde oss också kortfattat begreppet pseudo-slumpmässiga och säkra slumpmässiga nummer. Denna information är tillräcklig för att utvecklare kan använda slumpmässigt klassen i sina applikationer. Djupt dyk om du är intresserad av att utforska mer om slumpmässiga nummer för lösenord och engångslösenord.

Rekommenderade artiklar

Detta är en guide till Random Number Generator i C #. Här diskuterar vi hur Random Number Generator fungerar, begreppet pseudo-slumpmässiga och säkra slumpmässiga nummer och användningen av Random Number. Du kan också gå igenom våra andra relaterade artiklar för att lära dig mer -

  1. Matematiska funktioner i C #
  2. Destruktor i C #
  3. Omvänd nummer i Python
  4. Variabler i C #
  5. Variabler i JavaScript
  6. Slumpmässig nummergenerator i Matlab
  7. Tableau-versioner
  8. Random Number Generator i JavaScript
  9. Slumpnummergenerator i PHP

Kategori: