यहां हम C++ में Shuffle और random_shuffle देखेंगे। इन कार्यों का उपयोग सी ++ में सरणी तत्वों को फेरबदल करने के लिए किया जाता है। हम सरणियों के बजाय वेक्टर का भी उपयोग कर सकते हैं, उपयोग समान है। आइए पहले random_shuffle() देखें। इसका उपयोग तत्वों को [बाएं, दाएं] श्रेणी में बेतरतीब ढंग से पुनर्व्यवस्थित करने के लिए किया जाता है। यह फ़ंक्शन बेतरतीब ढंग से चुने गए कुछ पदों की स्थिति के साथ प्रत्येक तत्व की स्थिति को बेतरतीब ढंग से स्वैप करता है।
हम यह बताने के लिए कुछ यादृच्छिक जनरेटर फ़ंक्शन प्रदान कर सकते हैं कि प्रत्येक मामले में कौन सा तत्व लिया जाएगा। अगर हम कुछ प्रदान नहीं करते हैं, तो यह अपने स्वयं के यादृच्छिक जनरेटर फ़ंक्शन का उपयोग करेगा।
उदाहरण
#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) //generate 20 numbers and add them into vector arr arr.push_back(j); random_shuffle(arr.begin(), arr.end()); //use inbuilt random function to shuffle cout << "arr elements:"; for (vector<int>::iterator i = arr.begin(); i != arr.end(); ++i) cout << ' ' << *i; cout << endl; // using 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
अब देखते हैं कि शफल () फंक्शन क्या है। इसका उपयोग तत्वों को श्रेणी [बाएं, दाएं) में पुनर्व्यवस्थित करने के लिए भी किया जाता है। बेतरतीब। यह एक समान यादृच्छिक संख्या जनरेटर लेता है।
उदाहरण
#include <bits/stdc++.h> using namespace std; main() { vector<int> arr; unsigned seed = 0; for (int j = 1; j < 20; ++j) //generate 20 numbers and add them into vector 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() के साथ एकसमान यादृच्छिक संख्या जनरेटर पास करते हैं, तो यह किसी प्रकार के परिणाम उत्पन्न करेगा।