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

C++ में std::vector को शफ़ल कैसे करें?

वेक्टर को शफ़ल करने के लिए फिशर-येट्स शफ़ल एल्गोरिदम का उपयोग किया जाता है।

इस एल्गोरिदम में, वेक्टर का एक लीनियर स्कैन किया जाता है और फिर प्रत्येक एलिमेंट को शेष सभी एलिमेंट्स (स्वयं सहित) में से एक रैंडम एलिमेंट के साथ स्वैप किया जाता है।

एल्गोरिदम

शुरुआत
    show() फ़ंक्शन घोषित करें
    show() फ़ंक्शन में वेक्टर के कंस्ट्रक्टर को पैरामीटर के रूप में पास करें
    for (auto const& i: input)
        वेरिएबल i का मान प्रिंट करें
    वेक्टर v घोषित करें
    v वेक्टर में कुछ मान इनिशियलाइज़ करें
    integer डेटाटाइप का size वेरिएबल घोषित करें
    size() फ़ंक्शन कॉल करके वेक्टर का साइज़ प्राप्त करें
    size = v.size() इनिशियलाइज़ करें
    for (int i = 0; i < size - 1; i++)
        int j = i + rand() % (size - i)
        swap() फ़ंक्शन कॉल करके v[i] और v[j] के मान स्वैप करें
    "शफ़ल होने के बाद एलिमेंट्स:" प्रिंट करें
    v वेक्टर के शफ़ल मान दिखाने के लिए show() फ़ंक्शन कॉल करें
समाप्ति

उदाहरण कोड

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
using namespace std;

void show(vector<int> const &input) {
    for (auto const& i: input) {
        std::cout << i << " ";
    }
}

int main() {
    vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int size = v.size();
    for (int i = 0; i < size - 1; i++) {
        int j = i + rand() % (size - i);
        swap(v[i], v[j]);
    }
    cout << "शफ़ल होने के बाद एलिमेंट्स:" << endl;
    show(v);
    return 0;
}

आउटपुट

शफ़ल होने के बाद एलिमेंट्स: 2 8 5 3 1 9 4 7 6

नोट: बेहतर रैंडमनेस के लिए आधुनिक C++ में std::shuffle के साथ std::mt19937 का उपयोग करने की सलाह दी जाती है।

  1. - C++ में फंक्शन में सरणी पैरामीटर का आकार कैसे प्रिंट करें?

    डेटा टाइप का आकार sizeof() का उपयोग करके प्राप्त किया जा सकता है। C++ में फंक्शन में सरणी पैरामीटर के आकार को प्रिंट करने को प्रदर्शित करने वाला एक प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream> using namespace std; int func(int a[]) {    cout << "आकार: " <<

  1. - C++ में सिंगल कैरेक्टर को स्ट्रिंग में कैसे बदलें?

    सिंगल कैरेक्टर को स्ट्रिंग में बदलने के कई तरीके हैं। निम्नलिखित उदाहरण में, उनमें से कुछ का उपयोग कैरेक्टर को स्ट्रिंग में बदलने के लिए किया गया है। उदाहरण #include <iostream> #include <string> #include <sstream> int main() { char c = m; std::string s(1, c); std::cou

  1. - C++ में वेक्टर के कंटेंट्स कैसे प्रिंट करें?

    वेक्टर्स डायनामिक ऐरे के समान होते हैं लेकिन वेक्टर रिसाइज़ हो सकते हैं। वेक्टर सीक्वेंस कंटेनर हैं जो एलिमेंट्स के सम्मिलन या विलोपन के अनुसार अपना आकार बदल सकते हैं। कंटेनर वे ऑब्जेक्ट्स हैं जो एक ही प्रकार के डेटा को धारण करते हैं। वेक्टर्स भविष्य में एलिमेंट्स की वृद्धि के लिए कुछ अतिरिक्त स्टो