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

C++ में STL का उपयोग करके ऐरे को शफल करना


यहां हम 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() के साथ यूनिफॉर्म रैंडम नंबर जेनरेटर पास करते हैं, तो यह किसी तरह के परिणाम उत्पन्न करेगा।

  1. - C++ का उपयोग करके एरे में सभी तत्वों की रैंक ज्ञात करना

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

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

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

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

    n पूर्णांकों की एक सरणी arr[n] दी गई है, कार्य यह जांचना है कि क्या सरणी एक पैलिंड्रोम है या नहीं। हमें C++ में STL (स्टैंडर्ड टेम्पलेट लाइब्रेरी) का उपयोग करके यह कार्य करना है। C++ में STL (Standard Template Library) की एक विशेषता है, यह C++ टेम्पलेट कक्षाओं का एक समूह है जिसका उपयोग डेटा संरचना