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

सी ++ में एसटीएल का उपयोग करके एक ऐरे को शफल करें

यहां हम 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++ का उपयोग करके किसी ऐरे में सभी तत्वों की रैंक

    दी गई समस्या में, हमें एक सरणी के सभी दिए गए तत्वों को रैंक करने की आवश्यकता है, जिसमें सबसे छोटी संख्या सबसे छोटी रैंक और सबसे बड़ी रैंक सबसे बड़ी है। उदाहरण के लिए, हमें उनकी आवृत्तियों के आधार पर किसी संख्या के रैंक को बदलने की भी आवश्यकता होती है - Input : 20 30 10 Output : 2.0 3.0 1.0 Input :

  1. केवल सी ++ में सरणी तत्वों का उपयोग करके एक सरणी को बराबर करें

    इस समस्या में, हमें n तत्वों की एक सरणी दी गई है। हमारा काम केवल तत्वों का उपयोग करके एक सरणी को बराबर करने के लिए संचालन की संख्या की गणना करने के लिए एक प्रोग्राम बनाना है। हमें सरणी के सभी तत्वों को समान बनाने के लिए किए जाने वाले जोड़ या घटाव संचालन की संख्या की गणना करने की आवश्यकता है। समस्या

  1. यह जांचने के लिए प्रोग्राम कि कोई ऐरे पालिंड्रोम है या C++ में STL का उपयोग नहीं कर रहा है

    एन पूर्णांकों की एक सरणी गिरफ्तारी [एन] को देखते हुए, कार्य यह पता लगाना है कि सरणी एक पैलिंड्रोम है या नहीं। हमें बताए गए कार्य को C++ में STL का उपयोग करके करना है। सी ++ में एसटीएल (स्टैंडर्ड टेम्प्लेट लाइब्रेरी) की एक विशेषता है, यह सी ++ टेम्प्लेट क्लासेस का एक सेट है जो डेटा संरचनाओं और ढेर,