Introductie over Random Number Generator in C ++

Vele malen in onze programmering doet zich een situatie voor om de getallen willekeurig te genereren. Bijvoorbeeld dobbelspel, kaartdistributie naar spelers, apps voor het shuffelen van de nummers, enz. Om deze dingen aan te kunnen, moeten we een aantal hulpprogramma's hebben. In C ++ hebben we twee hulpprogramma's om deze willekeurige nummergeneratie te bereiken. Eerst zullen we naar die functies kijken, hun behoeften begrijpen. Later zullen we ze in onze code gebruiken om de functionaliteit te bereiken. Laten we dus beginnen met de functies en de bibliotheek waaraan deze is gekoppeld. In dit onderwerp gaan we meer te weten komen over de Random Number Generator in C ++.

Hoe willekeurig nummer te genereren?

Om het genereren van willekeurige getallen te bereiken, biedt C ++ de hulpprogramma's. We weten allemaal dat de meeste ingebouwde functies zijn opgenomen in het header-bestand van C ++. Een dergelijk headerbestand is stdlib.h. Het is een standaardbibliotheek met veel ingebouwde functies zoals EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, NULL, enz. Met deze functies kunnen we gemakkelijk de vereiste oplossing krijgen. We hoeven geen lange logica te schrijven om eruit te komen. In plaats daarvan kunnen we eenvoudig een van deze ingebouwde functies aanroepen volgens onze behoeften. Op dezelfde manier hebben we twee ingebouwde functies om een ​​willekeurig aantal te genereren. Ze zijn gerandomiseerd en rand. Door beide in combinatie te gebruiken, kunnen we het gewenste resultaat krijgen.

Laten we eens kijken wat die functies eigenlijk zijn.

  • randomize () - Deze functie is verantwoordelijk voor het genereren van een willekeurig nummer telkens wanneer u het programma uitvoert. Het resultaat is uniek elke keer dat de code wordt uitgevoerd. Deze unieke output zorgt ervoor dat we meer op deze functie vertrouwen. De eerste keer dat u de code uitvoert, genereert de uitvoer bijvoorbeeld 75, 23, 56, 24, 5, 21, 76, 32, 20 en 37. De volgende keer wordt de uitvoer gegenereerd als: 5, 64, 51, 78, 94, 53, 41, 19, 96 en 52. We zullen zien hoe de uitvoer zal zijn met en zonder deze functie te gebruiken, door code te schrijven in de volgende sectie.
  • rand () - Om de getallen van 0 tot RAND_MAX-1 te genereren, zullen we deze functie gebruiken. Hier geeft RAND_MAX het maximaal mogelijke bereik van het nummer aan. Laten we zeggen dat we willekeurige getallen in het bereik moeten genereren, 0 tot 99, dan is de waarde van RAND_MAX 100. Op basis van de behoefte aan de applicatie die we willen bouwen, wordt de waarde van RAND_MAX gekozen. Als het bijvoorbeeld een dobbelspel is, is RAND_MAX 6. Als het een kaartspel is, is RAND_MAX 52 enz.

Houd er rekening mee dat beide functies worden gedeclareerd in de standaardbibliotheek stdlib.h. Vergeet dus niet om dit headerbestand in uw code op te nemen. Laten we nu eens kijken hoe we een eenvoudig willekeurig nummergeneratorprogramma kunnen schrijven.

Voorbeeld met stappen

Nu we een idee hebben gekregen van hoe de functie voor het genereren van willekeurige getallen werkt, laten we een basisprogramma schrijven dat een willekeurig getal genereert en de uitvoer afdrukt.

Laten we het programma stap voor stap schrijven om meer inzicht te krijgen in de werking.

  • De eerste stap is het opnemen van de twee headerbestanden die nodig zijn voor het programma. De eerste als de h de invoer- en uitvoerfuncties bevat. Dit is het header-bestand van de input-output stream. Het tweede en belangrijke header-bestand is stdlib.h. Zoals eerder besproken, bevat deze standaardbibliotheek de twee functies, rand en randomiseren. Voeg ze dus beide aan het begin van de code toe.

#include
#include
using namespace std;

  • Nu we de header-bestanden hebben opgenomen, is de volgende stap het schrijven van de hoofdfunctie voor de uitvoering van de code. Om de hoofdfunctie in het volgende deel te definiëren.

int main( )
(
)

  • Verklaar een getal dat u wilt vasthouden en druk de waarde van het willekeurige nummer af. Het gegevenstype is van het type int en geeft een willekeurige naam.

int number;

  • We hebben een lusteller nodig om de waarden in de lus te verhogen. Verklaar dus de index i, van het type int. De maximale incrementwaarde die we zullen definiëren voor lus .

int i;

  • Nu zullen we een for-lus schrijven, voor het afdrukken van de waarden van het willekeurig gegenereerde nummer. Voor de eenvoud drukken we 10 nummers af. Het maximale aantal stappen is dus 10.

for(i = 1; i <= 10; i++)
(
)

  • Binnen voor lus, zullen we de randfunctie schrijven. De onderstaande code vertelt ons dat elk willekeurig gegenereerd nummer wordt gedeeld door 100 en de rest wordt overgenomen. Dat betekent dat de afgedrukte nummers tussen 0 en 99 zullen liggen. Als u hogere bereiken wilt, zal het modulo-nummer anders zijn. Dat is in plaats van 100 die we kunnen plaatsen, 150, 200, 100, etc.

number = rand() % 100;

  • In de laatste stap zullen we het gegenereerde nummer afdrukken met behulp van cout.

cout << number << "\t";

  • De uitvoer van de code is zoals hieronder. Houd er rekening mee dat u mogelijk verschillende uitvoer krijgt, omdat de generator van willekeurige getallen dit is.

  • Het probleem met de bovenstaande code is dat elke keer dat we de code uitvoeren dezelfde set uitvoer krijgt. Om te voorkomen dat we de srand () moeten gebruiken, verwijzen we hier naar de tijd op dat moment en genereren we de nieuwe waarden elke keer dat we het programma uitvoeren.

Laten we de volledige code bekijken met de functie srand.

#include
#include
using namespace std;
int main( )
(
int number;
int i;
srand(time(0));
for(i = 1; i <= 10; i++)
(
number = rand() % 100;
cout << number << "\t";
)
)

Twee uitvoeruitgangen van de code:

Eerste uitvoering:

Tweede uitvoering:

  • Hieronder staat de code om 5 willekeurige getallen binnen 1000 te genereren. Wijzig de waarde van het nummer en bekijk de uitvoer die telkens wordt gegenereerd. Vergelijk de verschillen tussen het gebruik van niet-ondertekend en zonder gebruik.

#include
#include
#include
int main ()
(
int i, number;
time_t nTime;
number = 5;
srand((unsigned) time(&nTime));
printf("Random numbers are: \n");
for( i = 0 ; i < number ; i++ )
(
printf("%d\n", rand() % 1000);
)
return(0);
)

Output:

Voor 1 e iteratie

Voor 2 e iteratie

Conclusie - Random Number Generator in C ++

In dit artikel hebben we geleerd wat een random number-generator is, de behoeften van random number-generator, ingebouwde functies van C ++ om dit te bereiken, met en zonder de randomize-functie, de betekenis van de standaardbibliotheek stdlib.h, stap voor stap instructies om de code te schrijven en uiteindelijk de output van twee verschillende benaderingen te vergelijken.

Aanbevolen artikelen

Dit is een gids voor Random Number Generator in C ++. Hier bespreken we hoe willekeurig getal te genereren, samen met voorbeelden en stappen. U kunt ook het volgende artikel bekijken voor meer informatie -

  1. Toegang tot modificaties in C ++
  2. Random Number Generator in Python
  3. Willekeurige nummergenerator in R
  4. Variabelen in C ++
  5. Toegang tot modificaties in PHP
  6. Willekeurige nummergenerator in C #
  7. Top 11 kenmerken en voordelen van C ++
  8. Voorbeelden van ingebouwde Python-functies