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

रिजर्वायर सैंपलिंग


परिचय

रिजर्वायर सैंपलिंग एक यादृच्छिक एल्गोरिदम है। इस एल्गोरिदम में, k आइटम n अलग-अलग आइटम की सूची से चुने जाते हैं।

हम इसे आकार k की एक सरणी को रिजर्वायर के रूप में बनाकर हल कर सकते हैं। फिर मुख्य सूची से बेतरतीब ढंग से एक तत्व चुनें और उस आइटम को रिजर्वायर सूची में रखें। जब एक आइटम एक बार चुना जाता है, तो इसे अगली बार के लिए नहीं चुना जाएगा। लेकिन यह दृष्टिकोण प्रभावी नहीं है, हम इस विधि द्वारा जटिलता बढ़ा सकते हैं।

रिजर्वायर सूची में, सूची से पहले k आइटम कॉपी करें, अब सूची में (k+1)वें नंबर से एक-एक करके, मान लें कि वर्तमान चयनित आइटम इंडेक्स i पर रखा गया है। 0 से i तक एक यादृच्छिक इंडेक्स ढूंढें और इसे j में संग्रहीत करें, यदि j 0 से k की रेंज में है, तो reservoir[j] को list[i] के साथ स्वैप करें।

इनपुट और आउटपुट

इनपुट: पूर्णांकों की सूची: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, k का मान = 6
आउटपुट: दी गई सरणी में K-चयनित आइटम: 8 2 7 9 12 6

एल्गोरिदम

chooseKItems(array, n, k)
इनपुट: सरणी, सरणी में तत्वों की संख्या, चुनने के लिए तत्वों की संख्या
आउटपुट: k तत्वों को बेतरतीब ढंग से चुनें

Begin
    आकार [k] का आउटपुट सरणी परिभाषित करें
    सरणी से पहले k आइटम आउटपुट में कॉपी करें
    जब तक i < n, करें
        j := 0 से i तक बेतरतीब ढंग से एक मान चुनें
        यदि j < k, तो
            output[j] := array[i]
        i को 1 से बढ़ाएं
    done
    आउटपुट सरणी प्रदर्शित करें
End

उदाहरण (C++ कोड)

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

void display(int array[], int n) {
    for (int i = 0; i < n; i++)
        cout << array[i] << " ";
}

void chooseKItems(int array[], int n, int k) {
    // यह सरणी से k आइटम चुनेगा
    int i;
    int output[k];
    for (i = 0; i < k; i++)
        output[i] = array[i];
    srand(time(NULL)); // अलग सीड मान प्राप्त करने के लिए समय फंक्शन का उपयोग करें
    while (i < n) {
        int j = rand() % (i+1); // 0 से i तक यादृच्छिक इंडेक्स
        if (j < k)
            // iवें तत्व को आउटपुट सरणी में jवें तत्व पर कॉपी करें
            output[j] = array[i];
        i++;
    }
    cout << "K-Selected items in the given array: ";
    display(output, k);
}

int main() {
    int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    int n = 12;
    int k = 6;
    chooseKItems(array, n, k);
}

आउटपुट

K-Selected items in the given array: 8 2 7 9 12 6
  1. जावास्क्रिप्ट Array shift() मेथड जावास्क्रिप्ट Array shift() मेथड

    जावास्क्रिप्ट का shift() मेथड एरे के पहले आइटम को हटाने के लिए उपयोग किया जाता है। सिंटैक्स इस प्रकार है: array.shift() उदाहरण 1 <!DOCTYPE html> <html> <body> <h2>डेमो हेडिंग</h2> <p id=test></p> <script> var arrStud = [Laptop, Desktop, Tab

  1. C# में Dimensional Array क्या है? C# में Dimensional Array क्या है?

    C# Multidimensional Arrays Allow करता है। Int के 2-Dimensional Array को ऐसे Declare करें:int[,] a;Multidimensional Array का Simplest Form 2-Dimensional Array है। 2-Dimensional Array, One-Dimensional Arrays की List होती है।निम्न Two-Dimensional Array 3 Rows और 4 Columns के साथ है।आइए अब C# में Multi-

  1. पायथन का उपयोग करके कन्वोल्यूशन का परिचय पायथन का उपयोग करके कन्वोल्यूशन का परिचय

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में कन्वोल्यूशन के बारे में जानेंगे। यह लेख न्यूरल नेटवर्क और फीचर एक्सट्रैक्शन के अंतर्गत आता है।पसंदीदा IDE - जुपिटर नोटबुकपूर्वापेक्षाएँ - Numpy इंस्टॉल्ड, Matplotlib इंस्टॉल्डइंस्टॉलेशन>>> pip install numpy>>> pip install matplot