Rasgele sayılar üretmek birçok programlama uygulamasında ortak bir gereksinimdir ve C++, belirli bir aralıkta rasgele sayılar üretmenin çeşitli yollarını sağlar. Bu yazıda C++'da 1 ile 10 arasında rastgele sayılar üretmenin farklı yöntemlerini inceleyeceğiz.
Yöntem 1:
Rand() işlevini kullanma:
C++'da 1 ile 10 arasında rastgele bir sayı üretmenin en basit yöntemlerinden biri, randevu() işlev. Bu fonksiyon şu şekilde tanımlanmıştır: başlık dosyasına girer ve belirli bir aralıkta rastgele bir tam sayı üretir. 0 ile RAND_MAX . Değeri RAND_MAX uygulamaya bağlıdır ve derleyiciden derleyiciye değişebilir.
Örnek:
Rand() fonksiyonunu kullanarak 1 ile 10 arasında rastgele bir sayı üretmek için bir örnek alalım, aşağıdaki kodu kullanabiliriz:
#include #include #include using namespace std; int main() { srand(time(0)); cout<< 'Random number between 1 and 10 is: '<<endl; for(int i="0;i<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'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<< 'Random number between 1 and 10 is: ' <<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'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<< 'Random number between 1 and 10 is: ' <<endl; for(int i="0;i<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;>
Bu kodda şunları ekledik: Ve başlık dosyaları. parça() işlevi, rastgele sayı üretecini çekirdek olarak geçerli saatle başlatmak için kullanılır. Program her çalıştırıldığında yeni bir rastgele sayı dizisinin oluşturulmasını sağlar.
randevu() Fonksiyon 0 ile 0 arasında rastgele bir tamsayı üretmek için kullanılır. RAND_MAX . Aralığı 1 ile 10 arasında sınırlamak için bu sayının 10'a bölünmesinden kalan kısmı alıp üzerine 1 ekliyoruz.
Yöntem 2:
C++11 rastgele kitaplığını kullanma
C++11 standart adında yeni bir kütüphane tanıttı Bu, rastgele sayılar oluşturmanın daha iyi bir yolunu sağlar. Bu kütüphane, tekdüze bir dağılıma sahip rastgele sayılar üretebilen çeşitli rastgele sayı üretme motorları ve dağıtımları sağlar.
Örnek:
kullanarak 1 ile 10 arasında rastgele bir sayı üretmek için bir örnek alalım. kütüphanede aşağıdaki kodu kullanabiliriz:
#include #include using namespace std; int main() { random_device rand; mt19937 gen(rand()); uniform_int_distributiondis(1, 10); int random_number = dis(gen); cout<< 'Random number between 1 and 10 is: ' <<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'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<< 'Random number between 1 and 10 is: ' <<endl; for(int i="0;i<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;>
Bu kodda şunu kullandık: zaman() geçerli saati bir başlangıç değeri olarak elde etme işlevi parça() işlev. parça() Rastgele sayı üretecini başlatmak için fonksiyon kullanılır. rand() işlev 0 ile 0 arasında rastgele bir tamsayı üretir RAND_MAX , bu daha sonra kullanılarak 1 ile 10 arasında bir aralıkla sınırlandırılır. operatör modülü ve buna 1 ekliyoruz.
Çözüm:
Sonuç olarak, C++'da 1 ile 10 arasında rastgele sayılar üretmenin çeşitli yöntemleri vardır. Yöntemin seçimi uygulamanın gereksinimlerine bağlıdır. hız, rastgelelik , Ve tekdüzelik oluşturulan sayıların iken rand() işlevi, uygulanması en basit ve en kolay olanıdır, iyi bir rastgelelik ve tekdüzelik sağlamayabilir. kitaplık, tekdüze dağılıma sahip rastgele sayılar üretmenin daha iyi bir yolunu sağlar, ancak uygulanması daha yavaş ve daha karmaşıktır. XORShift algoritma iyi sağlar rastgelelik Ve tekdüzelik ancak uygulanması daha karmaşıktır ve eskisi kadar hızlı olmayabilir. randevu() işlev.