সম্ভাব্যতা হল উপলভ্য ডেটার সেট থেকে পছন্দসই আউটপুট পাওয়ার সম্ভাবনা। সম্ভাবনার পরিসীমা 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