random number generator c
Deze tutorial beschrijft het gebruik van functies rand () en srand () in detail om willekeurige getallen te genereren in C ++:
Vaak hebben we het gebruik van willekeurige getallen in onze applicatie nodig om simulaties of games en andere applicaties te produceren die willekeurige gebeurtenissen vereisen.
Bijvoorbeeld, in een dobbelspel, zonder willekeurige gebeurtenissen, zullen we elke keer dat we de dobbelstenen gooien, dezelfde kant opduiken, waardoor ongewenste resultaten worden verkregen.
Het wordt dus noodzakelijk dat we beschikken over een generator voor willekeurige getallen. In de fysieke omgeving kunnen we willekeurige gebeurtenissen laten genereren, maar dat is niet mogelijk als het om computers gaat.
Lees de Easy C ++ Training Series door.
Dit komt omdat alles op computers binair is, d.w.z. 0 of 1 (waar of onwaar) en niets daartussenin. Computers genereren dus meestal voorspelbare gebeurtenissen en zijn niet in staat om willekeurige gebeurtenissen te genereren.
In plaats daarvan simuleren computers willekeur die wordt gedaan met pseudo-willekeurige nummergenerator (PRNG) C ++ heeft een generator voor willekeurige getallen en kan met veel van de toepassingen worden gebruikt.
In deze tutorial bespreken we de functies / benaderingen om willekeurige getallen in C ++ te genereren in detail.
Wat je leert:
- Pseudo-willekeurige nummergenerator (PRNG) in C ++
- rand en srand-functies in C ++
- Verschil tussen rand () en srand ()
- C ++ Random Float
- C ++ willekeurig getal tussen 0 en 1
- C ++ willekeurig getal tussen 1 en 10
- Veel Gestelde Vragen
- Gevolgtrekking
- Aanbevolen literatuur
Pseudo-willekeurige nummergenerator (PRNG) in C ++
Over het algemeen kan een pseudo-willekeurige nummergenerator (PRNG) worden gedefinieerd als een programma dat een kiemgetal of een beginnummer neemt en dit omzet in een ander getal dat verschilt van kiemgetal met behulp van wiskundige bewerkingen.
Dit proces wordt herhaaldelijk uitgevoerd door elke keer het laatst gegenereerde nummer te nemen. Elke keer dat het gegenereerde nummer geen verband houdt met de vorige nummers. Dit programma is dus in staat om een reeks getallen te genereren die willekeurig lijken.
De taal C ++ wordt geleverd met een ingebouwde generator voor pseudo-willekeurige getallen en biedt twee functies rand () en srand () die kunnen worden gebruikt om willekeurige getallen te genereren.
Laten we deze twee functies in detail bespreken.
mp3-muziek downloaden gratis top-app
rand en srand-functies in C ++
srand ()
Functieprototype: void srand (unsigned int seed);
Parameters: seed - Een geheel getal dat als seed wordt gebruikt door het algoritme voor de generator van pseudo-willekeurige getallen.
Winstwaarde: Geen
Omschrijving: srand-functie wordt gebruikt om de reeks pseudo-willekeurige getallen te initialiseren met een parameter genaamd ‘random seed’. Het zorgt ervoor dat de uitvoer van de rand-functie er willekeurig uitziet. Anders is de uitvoer van de functie rand () elke keer dat we deze aanroepen hetzelfde.
Dus als we de generator van willekeurige getallen voorzien van de functie srand (), wordt de generator gestart vanaf het punt dat afhankelijk is van de argumentwaarde die aan srand is doorgegeven. Als we de generator voor willekeurige getallen instellen met de systeemtijd Bijvoorbeeld, vóór de eerste aanroep van de functie rand (), dan genereert het elke keer dat we het programma uitvoeren de willekeurige getallen.
Merk op dat we de functie srand () gewoonlijk slechts één keer hoeven aan te roepen vóór de aanroep van de functie rand () en niet elke keer dat we willekeurige getallen genereren.
rand ()
Functieprototype: int rand (ongeldig);
Parameters: geen
Winstwaarde: Een geheel getal tussen 0 en RAND_MAX.
Omschrijving: De functie rand () genereert het volgende willekeurige getal in de reeks. Het gegenereerde getal is het pseudo-willekeurige gehele getal tussen 0 en RAND_MAX. RAND_MAX is een constante in de header die doorgaans is ingesteld op de waarde 32767.
Uitgang:
In het bovenstaande programma hebben we de eerste 100 willekeurige getallen gegenereerd door de systeemklok als zaad voor de srand-functie te geven. In dit programma hebben we zowel srand- als randfuncties gebruikt. Merk op dat vanwege de systeemklok als seed, de gegenereerde output elke keer anders zal zijn wanneer we het programma uitvoeren.
Verschil tussen rand () en srand ()
rij() | srand () |
---|---|
Wordt gebruikt om willekeurige getallen te genereren. | Zaden de PRNG die wordt gebruikt door de functie rand (). |
Wordt zo vaak gebeld als we de willekeurige getallen willen genereren. | Slechts één keer gebeld om de generator voor willekeurige getallen te zien. |
Accepteert geen argumenten. | Neemt de parameter die wordt gebruikt om de generator voor willekeurige getallen te zaaien. |
Retourneert de reeks willekeurige getallen elke keer dat deze wordt aangeroepen. | Retourneert geen waarde. |
C ++ Random Float
De functie rand () die we hierboven hebben gezien, retourneert standaard een geheel getal dat in bepaalde gevallen een overloop kan veroorzaken. We kunnen dus float of dubbele waarde gebruiken. We kunnen willekeurige getallen met float genereren door de geretourneerde waarde van de functie rand () naar ‘float’ te casten.
Het volgende genereert dus een willekeurig getal tussen float 0.0 en 1.0 (beide inclusief).
Op dezelfde manier genereert de onderstaande regel een willekeurig getal tussen 1.2 en 3.4
In ons volgende voorbeeld hieronder maken we gebruik van random float om de output te genereren.
C ++ willekeurig getal tussen 0 en 1
We kunnen de functie srand () en rand () gebruiken om willekeurige getallen tussen 0 en 1 te genereren. Merk op dat we de uitvoer van de functie rand () naar de decimale waarde moeten casten, ofwel float ofwel dubbel.
De standaard geretourneerde waarde van de functie rand (), d.w.z. integer, is onvoldoende om willekeurige getallen tussen 0 en 1 weer te geven die breuken zijn.
Het onderstaande C ++ -programma geeft de eerste vijf willekeurige getallen tussen 0 en 1 weer.
hoe je een methode aanroept met een array van objecten in java
Uitvoer
We zien dat de uitvoer van het programma het willekeurige getal tussen 0 en 1 is, wat breuken zijn.
Als we de geretourneerde waarde van de functie rand () niet zweven of verdubbelen, krijgen we 0 als het willekeurige getal.
C ++ willekeurig getal tussen 1 en 10
Het volgende voorbeeld is het genereren van willekeurige getallen tussen 1 en 10. Hieronder volgt het C ++ programma dat willekeurige getallen genereert.
We noemen de srand-functie met de systeemklok en dan de rand-functie met module 10 operators.
Uitgang:
In het bovenstaande programma genereren we de eerste 10 willekeurige getallen tussen 1 en 10. Merk op dat elke keer dat het programma wordt uitgevoerd, het verschillende sets getallen genereert omdat de srand-functie wordt aangeroepen.
Veel Gestelde Vragen
V # 1) Wat is het header-bestand voor de willekeurige functie in C ++?
Antwoord: De functies om willekeurige getallen, rand en srand te genereren, zijn gedefinieerd in< cstdlib > header van C ++.
Q # 2) Wat is Rand_max in C ++?
Antwoord: RAND_MAX is een constante in de koptekst die doorgaans is ingesteld op de waarde 32767. De pseudo-willekeurige nummergenerator (PRNG) genereert willekeurige getallen tussen 0 en RAND_MAX.
V # 3) Hoe werkt de willekeurige functie?
Antwoord: C ++ ondersteunt twee willekeurige functies, d.w.z. srand () en rand (). De functie srand () zaait de generator voor willekeurige getallen die wordt gebruikt door de functie rand () die de reeks willekeurige getallen genereert, afhankelijk van het initiële gegeven zaad.
Vraag 4) Hoe ga je om met de tijd?
Antwoord: De srand-functie zaait de pseudo-willekeurige nummergenerator (PRNG) die wordt gebruikt door de functie rand (). Het is een standaardpraktijk om het resultaat van een aanroep naar tijd (0) als zaadje te gebruiken. Deze tijdfunctie retourneert de waarde, een aantal seconden sinds 00:00 uur, 1 januari 1970, UTC (huidige UNIX-tijdstempel).
Dus de waarde van zaad verandert elke seconde. Daarom wordt elke keer dat srand wordt aangeroepen met de tijdfunctie een nieuwe reeks willekeurige getallen gegenereerd.
Gevolgtrekking
In deze tutorial hebben we het genereren van willekeurige getallen in detail besproken. Programmeertalen of in het algemeen computers genereren geen willekeurige getallen, omdat ze zijn ontworpen om voorspellende uitvoer te geven. Daarom moeten we willekeur simuleren.
Om willekeur te simuleren, maken we gebruik van een pseudo-random number generator (PRNG) die is ingebouwd in C ++. Dus met behulp van de twee functies, rand () en srand (), kunnen we willekeurige getallen genereren in C ++.
De functie srand () wordt gebruikt om zaad te leveren voor het genereren van willekeurige getallen, terwijl de functie rand () het volgende willekeurige getal in de reeks genereert.
Zoek hier de volledige C ++-trainingsserie.
Aanbevolen literatuur
- C # Random Number en C # Random String Generator met codevoorbeelden
- Python Main Function-zelfstudie met praktische voorbeelden
- Unix Pipes-zelfstudie: Pipes in Unix-programmering
- Recursie in C ++
- Vriendfuncties in C ++
- Polymorfisme in C ++
- Objectgeoriënteerd programmeren in C ++
- OOP Java: inleiding tot objectgeoriënteerd programmeren in Java