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

C++ में shuffle बनाम random_shuffle

यहां हम C++ में shuffle और random_shuffle देखेंगे। पहले random_shuffle देखते हैं। इसका उपयोग रेंज [left, right) में एलिमेंट्स को रैंडमली रिअरेंज करने के लिए किया जाता है। यह फंक्शन प्रत्येक एलिमेंट की पोजीशन को रैंडमली चुनी गई पोजीशन के साथ स्वैप करता है।

हम कुछ रैंडम जेनरेटर फंक्शन प्रदान कर सकते हैं जो बताएगा कि हर केस में कौन सा एलिमेंट लिया जाएगा। यदि हम कुछ प्रदान नहीं करते हैं, तो यह अपने स्वयं के रैंडम जेनरेटर फंक्शन का उपयोग करेगा।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int myRandomGenerator(int j) {
    return rand() % j;
}

int 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;
    return 0;
}

आउटपुट

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;

int 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;
    return 0;
}

आउटपुट

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 C++ में डायगोनल ट्रैवर्स II

    मान लीजिए हमारे पास nums नामक लिस्ट ऑफ लिस्ट है, हमें nums के सभी एलिमेंट्स को डायगोनल क्रम में दिखाना है।इसलिए, यदि इनपुट हैतो आउटपुट होगा [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:एक ऐरे ret परिभाषित करेंएक 2D ऐरे v परिभाषित करेंi := 0 से शुरू करें,

  1. C++ में प्रोसेस मारें C++ में प्रोसेस मारें

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

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

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