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

C++ में रैंडम पिक इंडेक्स


मान लीजिए कि हमारे पास संभावित डुप्लिकेट के साथ पूर्णांकों की एक सरणी है, हमें किसी दिए गए लक्ष्य संख्या के सूचकांक को यादृच्छिक रूप से चुनना होगा। हम मान सकते हैं कि दी गई लक्ष्य संख्या सरणी में मौजूद होनी चाहिए। तो अगर सरणी [1,2,3,3,3] की तरह है, तो चुनें (3), यादृच्छिक रूप से 2, 3, 4 वापस आ सकता है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • रिट:=- 1, सीएनटी:=1

  • मैं के लिए 0 से वी के आकार में

    • अगर v[i] =लक्ष्य, तो

      • यदि यादृच्छिक संख्या mod cnt =0 है, तो ret =i

      • सीएनटी:=सीएनटी + 1

  • वापसी रिट

उदाहरण (C++)

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   vector <int> v;
   Solution(vector<int>& nums) {
      srand(time(NULL));
      v = nums;
   }
   int pick(int target) {
      int ret = -1;
      int cnt = 1;
      for(int i = 0; i < v.size(); i++){
         if(v[i] == target){
            if(rand() % cnt++ == 0) ret = i;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v = {1,2,3,3,3};
   Solution ob(v);
   cout << (ob.pick(3));
}

इनपुट

Initialize with [1,2,3,3,3]
Call pick(3) to get random index positions

आउटपुट

4
3
4
2

  1. C++ में दाईं ओर NGE की संख्या

    आपको एक सरणी और लक्ष्य तत्व की अनुक्रमणिका दी जाती है। हमें उसके दाईं ओर दिए गए तत्व से अधिक तत्वों की संख्या गिननी है। आइए एक उदाहरण देखें। इनपुट arr = [2, 3, 5, 1, 4, 2, 6] index = 3 आउटपुट 3 लक्ष्य अनुक्रमणिका तत्व 1 है। तीन तत्व हैं अर्थात..., 4, 2, 6 जो इसके दाईं ओर 1 से बड़े हैं। एल्गोरिद

  1. C++ में रैंडम पॉइंटर के साथ कॉपी लिस्ट

    एक लिंक्ड सूची एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड में दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरे ब्लॉक में अगले फ़ील्ड का पता होता है। आइए मान लें कि हमारे पास एक लिंक्ड सूची है जैसे कि प्रत्येक नोड में एक यादृच्छिक सूचक होता है जो सूची में अन्य नोड्स को इंग

  1. C++ प्रोग्राम यादृच्छिक संख्या उत्पन्न करने के लिए

    आइए देखें कि C++ का उपयोग करके यादृच्छिक संख्याएँ कैसे उत्पन्न करें। यहां हम 0 से कुछ मान में एक यादृच्छिक संख्या उत्पन्न कर रहे हैं। (इस कार्यक्रम में अधिकतम मूल्य 100 है)। इस ऑपरेशन को करने के लिए हम srand () फ़ंक्शन का उपयोग कर रहे हैं। यह सी लाइब्रेरी में है। फ़ंक्शन void srand(unsigned int See