यहां हम C++ में shuffle और random_shuffle देखेंगे। इन फ़ंक्शन्स का उपयोग C++ में ऐरे तत्वों को शफल करने के लिए किया जाता है। हम ऐरे के बजाय वेक्टर का भी उपयोग कर सकते हैं, उपयोग समान है। आइए पहले random_shuffle() देखें। इसका उपयोग रेंज [left, right) में तत्वों को यादृच्छिक रूप से पुनर्व्यवस्थित करने के लिए किया जाता है। यह फ़ंक्शन प्रत्येक तत्व की स्थिति को कुछ यादृच्छिक रूप से चुनी गई स्थितियों की स्थिति के साथ यादृच्छिक रूप से स्वैप करता है।
हम कुछ रैंडम जेनरेटर फ़ंक्शन प्रदान कर सकते हैं ताकि हर मामले में कौन सा तत्व लिया जाएगा यह बताया जा सके। यदि हम कुछ प्रदान नहीं करते हैं, तो यह अपने स्वयं के रैंडम जेनरेटर फ़ंक्शन का उपयोग करेगा।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int myRandomGenerator(int j) {
return rand() % j;
}
main() {
srand(unsigned(time(0)));
vector<int> arr;
for (int j = 1; j < 20; ++j) // 20 नंबर जेनरेट करें और उन्हें वेक्टर arr में जोड़ें
arr.push_back(j);
random_shuffle(arr.begin(), arr.end()); // शफल करने के लिए इनबिल्ट रैंडम फ़ंक्शन का उपयोग करें
cout << "arr elements:";
for (vector<int>::iterator i = arr.begin(); i != arr.end(); ++i)
cout << ' ' << *i;
cout << endl;
// myRandomGenerator का उपयोग करके
random_shuffle(arr.begin(), arr.end(), myRandomGenerator);
cout << "arr elements:";
for (vector<int>::iterator i = arr.begin(); i != arr.end(); ++i)
cout << ' ' << *i;
cout << endl;
}
आउटपुट
arr elements: 5 14 15 6 3 16 13 12 10 2 4 1 17 9 18 11 7 8 19 arr elements: 8 10 5 6 14 1 15 3 19 16 13 18 7 9 4 12 11 17 2
अब देखते हैं कि shuffle() फ़ंक्शन क्या है। यह भी रेंज [left, right) में तत्वों को यादृच्छिक रूप से पुनर्व्यवस्थित करने के लिए उपयोग किया जाता है। यह एक यूनिफॉर्म रैंडम नंबर जेनरेटर लेता है।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
main() {
vector<int> arr;
unsigned seed = 0;
for (int j = 1; j < 20; ++j) // 20 नंबर जेनरेट करें और उन्हें वेक्टर arr में जोड़ें
arr.push_back(j);
shuffle(arr.begin(), arr.end(), default_random_engine(seed));
cout << "arr elements:";
for (vector<int>::iterator i = arr.begin(); i != arr.end(); ++i)
cout << ' ' << *i;
cout << endl;
}
आउटपुट
arr elements: 19 7 5 6 12 4 13 3 1 17 11 14 18 2 8 15 9 10 16
random_shuffle() और shuffle() के बीच एकमात्र अंतर यह है कि random_shuffle() रैंडम इंडेक्स जेनरेट करने के लिए rand() फ़ंक्शन का उपयोग करता है, और shuffle() यूनिफॉर्म रैंडम नंबर जेनरेटर का उपयोग करता है। हालांकि, यदि हम random_shuffle() के साथ यूनिफॉर्म रैंडम नंबर जेनरेटर पास करते हैं, तो यह किसी तरह के परिणाम उत्पन्न करेगा।