কম্পিউটার

C++ এ কয়েনের N টসে কমপক্ষে K হেড পাওয়ার সম্ভাবনা


সম্ভাব্যতা হল উপলভ্য ডেটার সেট থেকে পছন্দসই আউটপুট পাওয়ার সম্ভাবনা। সম্ভাবনার পরিসীমা 0 এবং 1 এর মধ্যে থাকে যেখানে একটি পূর্ণসংখ্যা 0 অসম্ভবের সম্ভাবনা দেখায় এবং 1 নিশ্চিততা নির্দেশ করে৷

সম্ভাব্যতা কি?

গণিতের সম্ভাব্যতা আমাদের এমন সরঞ্জাম দেয় যা ঘটনা এবং কারণগুলির অনিশ্চয়তা বলে। অন্য কথায় আমরা বলতে পারি সম্ভাব্যতা একটি প্রদত্ত ইভেন্টের সংঘটনের সম্ভাবনা গণনা করার সাথে সম্পর্কিত, যা 1 এবং 0 এর মধ্যে একটি সংখ্যা হিসাবে প্রকাশ করা যেতে পারে। উদাহরণস্বরূপ:একটি নিরপেক্ষ মুদ্রা নিক্ষেপ করা হলে একটি হেড পাওয়ার সম্ভাবনা, বা একটি 3 পাওয়ার সম্ভাবনা। যখন একটি পাশা পাকানো হয়।

এখন, প্রশ্নে ফিরে আসা আমাদের কয়েনের N টসে অন্তত কে হেড পাওয়ার সম্ভাবনা খুঁজে বের করতে হবে।

আমাদের যেমন 3টি কয়েন এবং k হল 2 তাই কয়েনগুলিকে টস করার 23=8টি উপায় আছে −

HHH, HTH, HHT, HTT, THH, THT, TTT, TTH৷

এবং যে সেটগুলিতে কমপক্ষে 2টি হেড থাকে তা হল −

HHH, HTH, HHT, THH৷

সুতরাং সম্ভাব্যতা হবে 4/8 বা 0.5।

উদাহরণ

Input: k = 1, n = 3
Output: 0.875

Input: k = 3, n = 6
Output: 0.65625

উপরের সমস্যা সমাধানের জন্য আমরা পন্থা অনুসরণ করব -

  • আমরা একটি ইনপুট হিসাবে n এবং k নেব।
  • ফ্যাক্টোরিয়ালের মান একটি অ্যারেতে সংরক্ষণ করুন এবং যখনই এটি প্রয়োজন হয় তখন এটিকে কল করুন।
  • গণনা সম্পাদন করুন।
  • ফলাফল ফেরত দিন।

অ্যালগরিদম

Step 1-> declare function to calculate the probability of getting at least k heads in n tosses
   double probability(int k, int n)
   Declare and set double check = 0
   Loop For i = k and i <= n and ++i
      Set check += temp[n] / (temp[i] * temp[n - i])
   End
   Call check = check / (1LL << n)
   return check
Step 2-> declare function to precompute the value
   void precompute()
   Set temp[0] = temp[1] = 1
   Loop For i = 2 and i < 20 and ++i
      Set temp[i] = temp[i - 1] * i
Step 3-> In main
   Call precompute()
   Call probability(1, 3)
Stop

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
#define size 21
double temp[size];
// calculate probability of getting at least k heads in n tosses.
double probability(int k, int n) {
   double check = 0;
   for (int i = k; i <= n; ++i)
   check += temp[n] / (temp[i] * temp[n - i]);
   check = check / (1LL << n);
   return check;
}
void precompute() {
   temp[0] = temp[1] = 1;
   for (int i = 2; i < 20; ++i)
   temp[i] = temp[i - 1] * i;
}
int main() {
   precompute();
   // Probability of getting 1 head out of 3 coins
   cout<<"probability is : "<<probability(1, 3) << "\n";
   // Probability of getting 3 head out of 6 coins
   cout<<"probability is : "<<probability(3, 6) <<"\n";
   return 0;
}

আউটপুট

probability is : 0.875
probability is : 0.65625

  1. C++-এ অ্যারেতে উপস্থিত একটি কী K-এর সম্ভাবনা

  2. C++ এ চেসবোর্ডে নাইট সম্ভাবনা

  3. C++ এ একটি ভেক্টর থেকে একটি সাবভেক্টর পাওয়া

  4. ভিজ্যুয়াল স্টুডিওতে C++ দিয়ে শুরু করা