logo

Hoe een willekeurig getal tussen 1 en 10 te genereren in C++

Het genereren van willekeurige getallen is een algemene vereiste in veel programmeertoepassingen, en C++ biedt verschillende manieren om willekeurige getallen binnen een bepaald bereik te genereren. In dit artikel zullen we verschillende methoden onderzoeken om willekeurige getallen tussen 1 en 10 in C++ te genereren.

Methode 1:

De functie rand() gebruiken:

Een van de eenvoudigste methoden om een ​​willekeurig getal tussen 1 en 10 te genereren in C++ is de rand() functie. Deze functie is gedefinieerd in de header-bestand en genereert een willekeurig geheel getal binnen een bereik van 0 naar RAND_MAX . De waarde van RAND_MAX is implementatieafhankelijk en kan variëren van compiler tot compiler.

Voorbeeld:

Laten we een voorbeeld nemen om een ​​willekeurig getal tussen 1 en 10 te genereren met behulp van de functie rand(). We kunnen de volgende code gebruiken:

 #include #include #include using namespace std; int main() { srand(time(0)); cout&lt;&lt; &apos;Random number between 1 and 10 is: &apos;&lt;<endl; for(int i="0;i&lt;10;i++)" cout << (rand() % 10) + 1<<' '; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Random number between 1 and 10 is: 4 5 7 10 7 5 1 7 10 2 </pre> <p>In this code, we have included the <strong> <em></em> </strong> and <strong> <em></em> </strong> header files. The <strong> <em>srand()</em> </strong> function is used to initialize the random number generator with the current time as the seed. It ensures that every time the program is run, a new sequence of random numbers is generated.</p> <p>The <strong> <em>rand()</em> </strong> function is used to generate a random integer between 0 and <strong> <em>RAND_MAX</em> </strong> . To limit the range between 1 and 10, we take the remainder of this number when divided by 10 and add 1 to it.</p> <h3>Method 2:</h3> <p> <strong>Using C++11 random library</strong> </p> <p>The <strong> <em>C++11</em> </strong> standard introduced a new library called <strong> <em></em> </strong> that provides a better way to generate random numbers. This library provides several random number generation engines and distributions that can generate random numbers with a uniform distribution.</p> <p> <strong>Example:</strong> </p> <p>Let&apos;s take an example to generate a random number between 1 and 10 using the <strong> <em></em> </strong> library, we can use the following code:</p> <pre> #include #include using namespace std; int main() { random_device rand; mt19937 gen(rand()); uniform_int_distributiondis(1, 10); int random_number = dis(gen); cout&lt;&lt; &apos;Random number between 1 and 10 is: &apos; &lt;<random_number<<endl; return 0; } < pre> <p>In this code, we have included the <strong> <em></em> </strong> header file. The <strong> <em>random_device</em> </strong> class is used to obtain a seed value for the random number generator. The <strong> <em>mt19937</em> </strong> class is a random number generation engine that produces random numbers with a uniform distribution. The <strong> <em>uniform_int_distribution</em> </strong> class is used to generate random integers within a given range.</p> <p>By default, the <strong> <em>mt19937</em> </strong> engine uses a seed value of <strong> <em>5489</em> </strong> , which can be changed using the <strong> <em>seed()</em> </strong> method. However, it is recommended to use a <strong> <em>random_device</em> </strong> to obtain a seed value for better randomness.</p> <p>The <strong> <em>uniform_int_distribution</em> </strong> class generates random integers with a uniform distribution within a given range. In this code, we have specified the range as <strong> <em>1</em> </strong> to <strong> <em>10</em> </strong> using the constructor.</p> <p>This method provides better randomness and a uniform distribution of generated numbers compared to the <strong> <em>rand()</em> </strong> function. However, it is slower and more complex to implement.</p> <h3>Method 3:</h3> <p> <strong>Using modulo operator with time():</strong> </p> <p>Another method to generate a random number between 1 and 10 is the <strong> <em>modulo operator</em> </strong> with the current time as a seed value. This method is similar to the first method using <strong> <em>rand()</em> </strong> function, but it uses a more random seed value and provides better randomness.</p> <p> <strong>Example:</strong> </p> <p>Let&apos;s take an example to generate a random number between 1 and 10 using the modulo operator with <strong> <em>time()</em> </strong> , we can use the following code:</p> <pre> #include #include using namespace std; int main() { srand(time(0)); cout&lt;&lt; &apos;Random number between 1 and 10 is: &apos; &lt;<endl; for(int i="0;i&lt;10;i++)" cout << (rand() % 10) + 1<<' '; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Random number between 1 and 10 is: 6 6 3 6 10 10 1 7 6 4 </pre> <p>In this code, we have used the <strong> <em>time()</em> </strong> function to obtain the current time as a seed value for the <strong> <em>srand()</em> </strong> function. The <strong> <em>srand()</em> </strong> function is used to initialize the random number generator. The <strong> <em>rand()</em> </strong> function generates a random integer between 0 and <strong> <em>RAND_MAX</em> </strong> , which is then limited to a range between 1 and 10 using the <strong> <em>modulo operator</em> </strong> and adding 1 to it.</p> <h2>Conclusion:</h2> <p>In conclusion, there are several methods to generate random numbers between 1 and 10 in C++. The choice of method depends on the requirements of the application, such as <strong> <em>speed, randomness</em> </strong> , and <strong> <em>uniformity</em> </strong> of generated numbers. While the <strong> <em>rand()</em> </strong> function is the simplest and easiest to implement, it may not provide good randomness and uniformity. The <strong> <em></em> </strong> library provides a better way to generate random numbers with a uniform distribution, but it is slower and more complex to implement. The <strong> <em>XORShift</em> </strong> algorithm provides good <strong> <em>randomness</em> </strong> and <strong> <em>uniformity</em> </strong> , but it is more complex to implement and may not be as fast as the <strong> <em>rand()</em> </strong> function.</p> <hr></endl;></pre></random_number<<endl;></pre></endl;>

In deze code hebben we de En header-bestanden. De strand() De functie wordt gebruikt om de generator voor willekeurige getallen te initialiseren met de huidige tijd als startpunt. Het zorgt ervoor dat elke keer dat het programma wordt uitgevoerd, een nieuwe reeks willekeurige getallen wordt gegenereerd.

De rand() functie wordt gebruikt om een ​​willekeurig geheel getal tussen 0 en te genereren RAND_MAX . Om het bereik tussen 1 en 10 te beperken, nemen we de rest van dit getal gedeeld door 10 en tellen we er 1 bij op.

Methode 2:

Met behulp van de willekeurige bibliotheek C++11

De C++11 standaard introduceerde een nieuwe bibliotheek genaamd dat een betere manier biedt om willekeurige getallen te genereren. Deze bibliotheek biedt verschillende zoekmachines en distributies voor het genereren van willekeurige getallen die willekeurige getallen met een uniforme verdeling kunnen genereren.

Voorbeeld:

Laten we een voorbeeld nemen om een ​​willekeurig getal tussen 1 en 10 te genereren met behulp van de bibliotheek, kunnen we de volgende code gebruiken:

 #include #include using namespace std; int main() { random_device rand; mt19937 gen(rand()); uniform_int_distributiondis(1, 10); int random_number = dis(gen); cout&lt;&lt; &apos;Random number between 1 and 10 is: &apos; &lt;<random_number<<endl; return 0; } < pre> <p>In this code, we have included the <strong> <em></em> </strong> header file. The <strong> <em>random_device</em> </strong> class is used to obtain a seed value for the random number generator. The <strong> <em>mt19937</em> </strong> class is a random number generation engine that produces random numbers with a uniform distribution. The <strong> <em>uniform_int_distribution</em> </strong> class is used to generate random integers within a given range.</p> <p>By default, the <strong> <em>mt19937</em> </strong> engine uses a seed value of <strong> <em>5489</em> </strong> , which can be changed using the <strong> <em>seed()</em> </strong> method. However, it is recommended to use a <strong> <em>random_device</em> </strong> to obtain a seed value for better randomness.</p> <p>The <strong> <em>uniform_int_distribution</em> </strong> class generates random integers with a uniform distribution within a given range. In this code, we have specified the range as <strong> <em>1</em> </strong> to <strong> <em>10</em> </strong> using the constructor.</p> <p>This method provides better randomness and a uniform distribution of generated numbers compared to the <strong> <em>rand()</em> </strong> function. However, it is slower and more complex to implement.</p> <h3>Method 3:</h3> <p> <strong>Using modulo operator with time():</strong> </p> <p>Another method to generate a random number between 1 and 10 is the <strong> <em>modulo operator</em> </strong> with the current time as a seed value. This method is similar to the first method using <strong> <em>rand()</em> </strong> function, but it uses a more random seed value and provides better randomness.</p> <p> <strong>Example:</strong> </p> <p>Let&apos;s take an example to generate a random number between 1 and 10 using the modulo operator with <strong> <em>time()</em> </strong> , we can use the following code:</p> <pre> #include #include using namespace std; int main() { srand(time(0)); cout&lt;&lt; &apos;Random number between 1 and 10 is: &apos; &lt;<endl; for(int i="0;i&lt;10;i++)" cout << (rand() % 10) + 1<<\' \'; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Random number between 1 and 10 is: 6 6 3 6 10 10 1 7 6 4 </pre> <p>In this code, we have used the <strong> <em>time()</em> </strong> function to obtain the current time as a seed value for the <strong> <em>srand()</em> </strong> function. The <strong> <em>srand()</em> </strong> function is used to initialize the random number generator. The <strong> <em>rand()</em> </strong> function generates a random integer between 0 and <strong> <em>RAND_MAX</em> </strong> , which is then limited to a range between 1 and 10 using the <strong> <em>modulo operator</em> </strong> and adding 1 to it.</p> <h2>Conclusion:</h2> <p>In conclusion, there are several methods to generate random numbers between 1 and 10 in C++. The choice of method depends on the requirements of the application, such as <strong> <em>speed, randomness</em> </strong> , and <strong> <em>uniformity</em> </strong> of generated numbers. While the <strong> <em>rand()</em> </strong> function is the simplest and easiest to implement, it may not provide good randomness and uniformity. The <strong> <em></em> </strong> library provides a better way to generate random numbers with a uniform distribution, but it is slower and more complex to implement. The <strong> <em>XORShift</em> </strong> algorithm provides good <strong> <em>randomness</em> </strong> and <strong> <em>uniformity</em> </strong> , but it is more complex to implement and may not be as fast as the <strong> <em>rand()</em> </strong> function.</p> <hr></endl;></pre></random_number<<endl;>

In deze code hebben we de tijd() functie om de huidige tijd te verkrijgen als startwaarde voor de strand() functie. De strand() functie wordt gebruikt om de generator voor willekeurige getallen te initialiseren. De rand() functie genereert een willekeurig geheel getal tussen 0 en RAND_MAX , dat vervolgens wordt beperkt tot een bereik tussen 1 en 10 met behulp van de operatormodule en daar 1 bij optellen.

Conclusie:

Concluderend zijn er verschillende methoden om willekeurige getallen tussen 1 en 10 te genereren in C++. De keuze van de methode is afhankelijk van de vereisten van de toepassing, zoals snelheid, willekeur , En uniformiteit van gegenereerde getallen. Terwijl de rand() functie het eenvoudigst en gemakkelijkst te implementeren is, biedt deze mogelijk geen goede willekeur en uniformiteit. De bibliotheek biedt een betere manier om willekeurige getallen met een uniforme verdeling te genereren, maar is langzamer en complexer om te implementeren. De XORShift algoritme biedt goede resultaten willekeurigheid En uniformiteit , maar het is complexer om te implementeren en is mogelijk niet zo snel als de rand() functie.