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

C++ प्रोग्राम: फिशर-येट्स एल्गोरिदम से ऐरे शफलिंग


फिशर-येट्स एल्गोरिदम

फिशर-येट्स एल्गोरिदम ऐरे तत्वों का यादृच्छिक क्रमपरिवर्तन उत्पन्न करता है, यानी यह ऐरे के सभी तत्वों को निष्पक्ष रूप से शफल करता है। सभी क्रमपरिवर्तन समान रूप से संभावित होते हैं।

C++ प्रोग्राम उदाहरण

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {
    int n;
    cout << "Enter the array size: " << endl;
    cin >> n;
    
    int arr[n], arr1[n], index_arr[n];
    int index;
    
    cout << "Enter the array elements: " << endl;
    for (int i = 0; i < n; i++)
        cin >> arr[i];
    
    for (int i = 0; i < n; i++)
        index_arr[i] = 0;
    
    // बेहतर यादृच्छिकता के लिए srand का उपयोग
    srand(time(0));
    
    for (int i = 0; i < n; i++) {
        do {
            index = rand() % n;
        } while (index_arr[index] != 0);
        index_arr[index] = 1;
        arr1[i] = arr[index];
    }
    
    cout << "The shuffled array is: ";
    for (int i = 0; i < n; i++)
        cout << arr1[i] << " ";
    return 0;
}

आउटपुट

Enter the array size: 10
Enter the array elements: 1 2 3 4 5 6 7 8 9 10
The shuffled array is: 4 7 8 6 3 10 2 1 9 5

कोड व्याख्या

ऐरे इनपुट

उपयोगकर्ता से ऐरे का आकार और तत्व लिए जाते हैं।

शफलिंग तर्क

index_arr सरणी ट्रैक करती है कि कौन से सूचकांक पहले ही उपयोग किए जा चुके हैं। rand() फ़ंक्शन यादृच्छिक सूचकांक उत्पन्न करता है, और do-while लूप सुनिश्चित करता है कि प्रत्येक सूचकांक केवल एक बार उपयोग किया जाए।

नोट

आधुनिक C++ में <random> हेडर और std::shuffle का उपयोग करना अधिक बेहतर और निष्पक्ष होता है।

  1. - C++ का उपयोग करके ऐरे रोटेशन के लिए रिवर्सल एल्गोरिदम

    दी गई समस्या में, हमें एक ऐरे दिया गया है, और हमें d एलिमेंट्स द्वारा ऐरे को रिवर्सल एल्गोरिदम का उपयोग करके घुमाना आवश्यक है, उदाहरण के लिए −Input : arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2 Output : arr[] = [3, 4, 5, 6, 7, 1, 2] Explanation : जैसा कि आप देख सकते हैं हमें इस ऐरे को d = 2 द्वारा घु

  1. ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम के लिए C++ प्रोग्राम ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम के लिए C++ प्रोग्राम

    पेज नंबर और पेज साइज़ दिए गए हैं; कार्य ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम का उपयोग करके मेमोरी ब्लॉक को पेज में आवंटित करते समय हिट्स और मिस की संख्या ढूंढना है। ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम क्या है? ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम एक पेज रिप्लेसमेंट एल्गोरिदम है। एक पेज रिप्लेसमेंट एल्गोरि

  1. C++ में सरणी के एलिमेंट्स का गुणनफल C++ में सरणी के एलिमेंट्स का गुणनफल

    पूर्णांक एलिमेंट्स की एक सरणी दी गई है और कार्य सरणी के एलिमेंट्स को गुणा करना और प्रदर्शित करना है। उदाहरण इनपुट-: arr[]={1,2,3,4,5,6,7} आउटपुट-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 इनपुट-: arr[]={3, 4,6, 2, 7, 8, 4} आउटपुट-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए प्रोग्राम में उपयोग किया गया द