प्रायिकता उपलब्ध डेटा के सेट से वांछित आउटपुट प्राप्त करने की संभावना है। प्रायिकता की सीमा 0 और 1 के बीच होती है जहाँ एक पूर्णांक 0 असंभवता की संभावना को दर्शाता है और 1 निश्चितता को दर्शाता है।
संभावना क्या है?
गणित में प्रायिकता हमें ऐसे उपकरण देती है जो घटनाओं और कारणों की अनिश्चितता को बताते हैं। दूसरे शब्दों में, हम कह सकते हैं कि संभाव्यता किसी घटना के घटित होने की संभावना की गणना से संबंधित है, जिसे 1 और 0 के बीच की संख्या के रूप में व्यक्त किया जा सकता है। उदाहरण के लिए:एक निष्पक्ष सिक्के को उछालने पर एक हेड आने की संभावना, या एक 3 प्राप्त करने की संभावना जब एक पासा लुढ़काया जाता है।
अब, इस प्रश्न पर वापस आते हैं कि हमें सिक्कों के N उछाल में कम से कम k शीर्ष आने की प्रायिकता ज्ञात करनी होगी।
जैसे हमारे पास 3 सिक्के हैं और k 2 है, इसलिए सिक्कों को उछालने के 23=8 तरीके हैं -
एचएचएच, एचटीएच, एचएचटी, एचटीटी, टीएचएच, टीएचटी, टीटीटी, टीटीएच।
और वे समुच्चय जिनमें कम से कम 2 शीर्ष हैं -
एचएचएच, एचटीएच, एचएचटी, टीएचएच।
तो प्रायिकता 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