Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में शफल बनाम random_shuffle

यहां हम 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() के साथ एकसमान यादृच्छिक संख्या जनरेटर पास करते हैं, तो यह उसी तरह के परिणाम उत्पन्न करेगा।


  1. C++ . में विकर्ण ट्रैवर्स II

    मान लीजिए कि हमारे पास nums नामक सूचियों की एक सूची है, हमें अंकों के सभी तत्वों को विकर्ण क्रम में दिखाना होगा। तो, अगर इनपुट पसंद है तो आउटपुट [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16] होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक सरणी रिट परिभाषित करें एक 2डी सरणी को परिभाषित

  1. सी ++ में प्रक्रिया को मारें

    मान लीजिए कि हमारे पास n प्रक्रियाएं हैं, यहां प्रत्येक प्रक्रिया की एक विशिष्ट आईडी होती है जिसे PID या प्रक्रिया आईडी कहा जाता है और उसका PPID (पैरेंट प्रोसेस आईडी) भी होता है। प्रत्येक प्रक्रिया में केवल एक पैरेंट प्रक्रिया होती है, लेकिन इसमें एक या अधिक चाइल्ड प्रक्रियाएं हो सकती हैं। यह एक प

  1. सी ++ में गिलहरी सिमुलेशन

    एक पेड़, एक गिलहरी, और कई नट हैं। स्थितियों को 2डी ग्रिड में कोशिकाओं द्वारा दर्शाया जाता है। आपका लक्ष्य गिलहरी के लिए सभी नटों को इकट्ठा करने और उन्हें एक-एक करके पेड़ के नीचे रखने के लिए न्यूनतम दूरी का पता लगाना है। गिलहरी एक समय में केवल एक अखरोट ले सकती है और चार दिशाओं में - ऊपर, नीचे, बाएँ औ