C++ میں رینڈم نمبر جنریٹر (رینڈ اور srand)

یہ ٹیوٹوریل C++ میں رینڈم نمبرز بنانے کے لیے فنکشنز rand() اور srand() کے استعمال کو تفصیل سے بیان کرتا ہے:

کئی بار ہمیں اپنی ایپلیکیشن میں بے ترتیب نمبروں کو تیار کرنے کی ضرورت ہوتی ہے۔ سمولیشنز یا گیمز اور دیگر ایپلی کیشنز جن کے لیے بے ترتیب واقعات کی ضرورت ہوتی ہے۔

مثال کے طور پر، ڈائس کے کھیل میں، بے ترتیب واقعات کے بغیر، جب بھی ہم پھینکیں گے تو ہمارے پاس وہی سائیڈ پاپ اپ ہوگا۔ ڈائس اس طرح ناپسندیدہ نتائج دیتا ہے۔

اس طرح یہ ضروری ہو جاتا ہے کہ ہمارے پاس ایک بے ترتیب نمبر جنریٹر ہو۔ جسمانی ماحول میں، ہم بے ترتیب واقعات پیدا کر سکتے ہیں لیکن جب کمپیوٹر کی بات آتی ہے تو یہ ممکن نہیں ہے۔

اس کی وجہ یہ ہے کہ کمپیوٹرز میں ہر چیز بائنری ہے یعنی 0 یا 1 (سچ یا غلط) اور اس کے درمیان کچھ نہیں ہے۔ لہذا کمپیوٹر عام طور پر پیشین گوئی کے قابل واقعات پیدا کرتے ہیں اور بے ترتیب واقعات پیدا کرنے کے قابل نہیں ہوتے ہیں۔

اس کے بجائے، کمپیوٹر بے ترتیب پن کی نقل کرتے ہیں جو کہ سیڈو-رینڈم نمبر جنریٹر (PRNG) کا استعمال کرتے ہوئے کیا جاتا ہے۔ ۔ C++ میں ایک رینڈم نمبر جنریٹر ہے اور اسے بہت سی ایپلی کیشنز کے ساتھ استعمال کیا جا سکتا ہے۔

اس ٹیوٹوریل میں، ہم C++ میں بے ترتیب نمبر بنانے کے فنکشنز/طریقہ کار پر تفصیل سے بات کریں گے۔

سیوڈو- رینڈم نمبر جنریٹر (PRNG) C++ میں

عام طور پر، ایک چھدم بے ترتیب نمبر جنریٹر (PRNG) کو ایک ایسے پروگرام کے طور پر بیان کیا جا سکتا ہے جو ایک بیج یا ابتدائی نمبر لیتا ہے اور اسے کسی دوسرے نمبر میں تبدیل کرتا ہے جو مختلف ہے۔ بیج سےریاضی کی کارروائیوں کا استعمال کرتے ہوئے۔

یہ عمل ہر بار آخری تیار کردہ نمبر لے کر بار بار کیا جاتا ہے۔ ہر بار پیدا ہونے والا نمبر پچھلے نمبروں سے غیر متعلق ہوتا ہے۔ اس طرح یہ پروگرام نمبروں کی ایک سیریز تیار کرنے کے قابل ہے جو بے ترتیب دکھائی دیتے ہیں۔

C++ زبان ایک ان بلٹ سیوڈو-رینڈم نمبر جنریٹر کے ساتھ آتی ہے اور دو فنکشن فراہم کرتا ہے rand () اور srand () جو استعمال کیا جا سکتا ہے۔ رینڈم نمبرز بنائیں۔

آئیے ان دو فنکشنز پر تفصیل سے بات کریں۔

رینڈ اور سینڈ فنکشنز C++ میں

srand ()

0 فنکشن پروٹو ٹائپ:void srand (غیر دستخط شدہ int seed);

پیرامیٹر: بیج - ایک عددی قدر جسے سیوڈو رینڈم نمبر جنریٹر الگورتھم کے ذریعہ بیج کے طور پر استعمال کیا جانا ہے۔ .

واپسی قدر: کوئی نہیں

تفصیل: srand فنکشن کو 'random' نامی پیرامیٹر کے ساتھ چھدم بے ترتیب نمبروں کی ترتیب کو شروع کرنے کے لیے استعمال کیا جاتا ہے۔ بیج' یہ رینڈ فنکشن کی آؤٹ پٹ کو بے ترتیب نظر آتا ہے۔ دوسری صورت میں، رینڈ () فنکشن کا آؤٹ پٹ ہر بار ایک جیسا ہو گا جب ہم اسے کال کریں گے۔

اس طرح، اگر ہم رینڈم نمبر جنریٹر کو srand () فنکشن کے ساتھ سیڈ کریں گے، تو یہ جنریٹر کو پوائنٹ سے شروع کر دے گا۔ جو srand کو بھیجی گئی دلیل کی قدر پر منحصر ہے۔ اگر ہم رینڈم نمبر جنریٹر کو سسٹم ٹائم کے ساتھ سیٹ کرتے ہیں مثال کے طور پر، رینڈ () فنکشن پر پہلی کال سے پہلے، تو ہر بار جب ہم چلائیں گے تو یہ بے ترتیب نمبر تیار کرے گا۔پروگرام۔

نوٹ کریں کہ ہمیں عام طور پر کال ٹو رینڈ () فنکشن سے پہلے صرف ایک بار srand () فنکشن کو کال کرنا پڑتا ہے اور ہر بار جب ہم بے ترتیب نمبر تیار کرتے ہیں۔

rand ( )

فنکشن پروٹو ٹائپ: int rand (void);

پیرامیٹر: کوئی نہیں

واپسی قدر: 0 اور RAND_MAX کے درمیان ایک عدد عدد۔

تفصیل: رینڈ () فنکشن ترتیب میں اگلا بے ترتیب نمبر تیار کرتا ہے۔ تیار کردہ نمبر 0 اور RAND_MAX کے درمیان چھدم بے ترتیب عدد ہے۔ RAND_MAX ہیڈر میں ایک مستقل ہے جو عام طور پر 32767 کی قدر پر سیٹ ہوتا ہے۔

#include  #include  #include  int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count = 100; ++count) { std::cout  std::rand()  "\t"; // display 5 random numbers per row if (count % 5 == 0) std::cout  "\n"; } return 0; } 

Output:

مندرجہ بالا پروگرام میں، ہمارے پاس ہے سسٹم کلاک کو srand فنکشن کے لیے بطور بیج دے کر، پہلے 100 بے ترتیب نمبر بنائے۔ اس پروگرام میں، ہم نے srand اور rand دونوں فنکشنز کا استعمال کیا ہے۔ نوٹ کریں کہ سیڈ کے طور پر سسٹم کلاک کی وجہ سے، ہر بار جب ہم پروگرام کو چلاتے ہیں تو پیدا ہونے والا آؤٹ پٹ مختلف ہوگا۔

رینڈ () اور سرینڈ () کے درمیان فرق

rand() srand()
رینڈم نمبرز بنانے کے لیے استعمال کیا جاتا ہے۔ رینڈ () فنکشن کے ذریعے استعمال ہونے والے PRNG کو بیج کرتا ہے۔
جتنی بار ہم بے ترتیب نمبر بنانا چاہتے ہیں کال کی جاتی ہے۔ رینڈم نمبر جنریٹر کو دیکھنے کے لیے صرف ایک بار کال کی جاتی ہے۔
کوئی دلیل نہیں لیتا ہے۔ وہ پیرامیٹر لیتا ہے جو بے ترتیب نمبر جنریٹر کو سیڈ کرنے کے لیے استعمال ہوتا ہے۔
کی ترتیب لوٹاتا ہےبے ترتیب نمبرز جب بھی اسے بلایا جاتا ہے۔ کوئی قدر واپس نہیں کرتا ہے۔

C++ رینڈم فلوٹ

رینڈ () فنکشن جو ہم نے اوپر دیکھا ہے کہ بذریعہ ڈیفالٹ ایک عددی قدر واپس کرتا ہے جو بعض صورتوں میں اوور فلو کا سبب بن سکتا ہے۔ اس طرح، ہم فلوٹ یا ڈبل ​​ویلیو استعمال کر سکتے ہیں۔ ہم رینڈ () فنکشن کی ریٹرن ویلیو کو 'فلوٹ' میں ڈال کر فلوٹ رینڈم نمبر بنا سکتے ہیں۔

اس طرح درج ذیل فلوٹ 0.0 اور 1.0 (دونوں سمیت) کے درمیان ایک بے ترتیب نمبر تیار کرے گا۔

cout

Similarly, the below line will generate a random number between 1.2 and 3.4

cout1.2 + static_cast  (rand()) / ( static_cast  (RAND_MAX/(3.4-1.2)));

In our subsequent example below we make use of random float to generate the output.

C++ Random Number Between 0 And 1

We can use srand () and rand () function to generate random numbers between 0 and 1. Note that we have to cast the output of rand () function to the decimal value either float or double.

The default return value of rand () function i.e. integer is inadequate to display random numbers between 0 and 1 which are fractions.

C++ program given below displays the first five random numbers between 0 and 1.

#include  #include  using namespace std; int main() { cout"Random numbers generated between 0 and 1:"="" ="" cout="" endl;="" for="" i="" i++)="" null="" pre="" rand()="" rand_max="" return="" srand(="" {="" }="" }="">

Output:

We see that the output of the program is the random number between 0 and 1 which are fractions.

If we don’t cast the return value of rand () function to float or double, then we will get 0 as the random number.

C++ Random Number Between 1 And 10

The next example is to generate random numbers between 1 and 10. Following is the C++ program that generates random numbers.

We call the srand function with the system clock and then call the rand function with module 10 operators.

#include  #include  #include  using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout"Random numbers generated between 1 and 10:"="" cout="" for(int="" i="0;i10;i++)" pre="" return="" }="">

Output:

In the above program, we generate the first 10 random numbers between 1 and 10. Note that every time the program is run, it will generate different sets of numbers because of the srand function being called.

Frequently Asked Questions

Q #1) What is the header file for Random function in C++?

Answer: The functions to generate random numbers, rand and srand are defined in cstdlib> header of C++.

Q #2) What is Rand_max in C++?

Answer: RAND_MAX is a constant in header generally set to value 32767. The pseudo-random number generator (PRNG) generates random numbers between 0 to RAND_MAX.

Q #3) How does the random function work?

Answer: C++ supports two random functions i.e. srand () and rand ( ). The function srand () seeds the random number generator used by rand () function which generates the random number sequence depending on the initial seed provided.

Q #4) How do you srand with time?

Answer: The srand function seeds the pseudo-random number generator (PRNG) used by the rand () function. It is a standard practice to use the result of a call to time (0) as seed. This time function returns the value, a number of seconds since 00:00 hours, Jan 1, 1970, UTC (current UNIX timestamp).

Thus the value of seed changes every second. Hence every time when srand is called with time function, a new set of the random numbers is generated.

Conclusion

We have discussed Random Number Generation in detail in this tutorial. Programming languages or in general computers do not generate random numbers as they are designed to give predictive output. Hence, we need to simulate randomness.

In order to simulate randomness, we make use of pseudo-random number generator (PRNG) which is in-built in C++. Thus using the two functions, rand () and srand () we can generate random numbers in C++.

The function srand () is used to provide seed for generating random numbers while rand () function generates the next random number in the sequence.

اوپر سکرول کریں