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

जलाशय नमूनाकरण


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

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

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

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

Input:
The list of integers: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, The value of k = 6
Output:
K-Selected items in the given array: 8 2 7 9 12 6

एल्गोरिदम

chooseKItems(array, n, k)

इनपुट: सरणी, सरणी में तत्वों की संख्या, चुनने के लिए तत्वों की संख्या।

आउटपुट: k तत्वों को बेतरतीब ढंग से चुनें।

Begin
   define output array of size [k]
   copy k first items from array to output

   while i < n, do
      j := randomly choose one value from 0 to i
      if j < k, then
         output[j] := array[i]
      increase i by 1
   done
   display output array
End

उदाहरण

#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) {        //it will choose k items from the array
   int i;
   int output[k];
   for (i = 0; i < k; i++)
      output[i] = array[i];

   srand(time(NULL));        //use time function to get different seed value

   while(i < n) {
      int j = rand() % (i+1);         //random index from 0 to i

      if (j < k)          //copy ith element to jth element in the output array
         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() आइए अब जावास्क्रिप्ट में शिफ्ट () विधि को लागू करें - उदाहरण <!DOCTYPE html> <html> <body>    <h2>Demo Heading</h2>   &

  1. सी # में आयामी ऐरे?

    सी # बहुआयामी सरणी की अनुमति देता है। int के 2-आयामी सरणी को इस रूप में घोषित करें। int [ , , ] a; बहुआयामी सरणी का सबसे सरल रूप 2-आयामी सरणी है। 2-आयामी सरणी एक-आयामी सरणियों की एक सूची है। निम्नलिखित 3 पंक्तियों और 4 स्तंभों के साथ एक द्वि-आयामी सरणी है। आइए अब C# में बहु-आयामी सरणियों के साथ

  1. परिचय-से-कन्वेंशन-उपयोग-अजगर

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