কম্পিউটার

C++ এ র্যান্ডম পিক ইনডেক্স


ধরুন আমাদের সম্ভাব্য ডুপ্লিকেট সহ পূর্ণসংখ্যার একটি অ্যারে আছে, আমাদের একটি নির্দিষ্ট লক্ষ্য সংখ্যার এলোমেলোভাবে সূচক বাছাই করতে হবে। আমরা ধরে নিতে পারি যে প্রদত্ত টার্গেট নম্বরটি অবশ্যই অ্যারেতে বিদ্যমান থাকবে। সুতরাং যদি অ্যারেটি [1,2,3,3,3] এর মত হয়, তাহলে পিক(3), 2, 3, 4 এলোমেলোভাবে ফিরতে পারে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ret :=- 1, cnt :=1

  • আমি 0 থেকে v

    এর পরিসরে
    • যদি v[i] =লক্ষ্য, তাহলে

      • যদি র্যান্ডম সংখ্যা mod cnt =0, তাহলে ret =i

      • cnt :=cnt + 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-এর সংখ্যা

  2. C++ এ এলোমেলো পয়েন্টার সহ তালিকা অনুলিপি করুন

  3. C++ এ ওভারলোডিং অ্যারে সূচক অপারেটর []

  4. এলোমেলো সংখ্যা তৈরি করতে C++ প্রোগ্রাম