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

C++ में सिक्कों के N टॉस में कम से कम K हेड आने की प्रायिकता

प्रायिकता उपलब्ध डेटा के सेट से वांछित आउटपुट प्राप्त करने की संभावना है। प्रायिकता की सीमा 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

  1. C++ में सरणी में मौजूद कुंजी K की प्रायिकता

    आकार एन की एक सरणी के साथ दिया गया है और कार्य किसी सरणी में उपलब्ध होने पर दिए गए तत्व k की संभावना को खोजना है। संपूर्ण सरणी को n तक पार करें जो किसी सरणी में तत्वों की संख्या के बराबर है और दिए गए तत्व या कुंजी k की खोज करें। यदि तत्व किसी सरणी में मौजूद है तो इसकी संभावना की गणना करें अन्यथा 0

  1. C++ . में शतरंज की बिसात में नाइट की संभाव्यता

    मान लीजिए कि हमारे पास एक NxN शतरंज की बिसात है, एक शूरवीर r-वें पंक्ति और c-वें स्तंभ से शुरू होता है और ठीक K चाल चलने का प्रयास करता है। यहां पंक्तियों और स्तंभों को 0 अनुक्रमित किया गया है, इसलिए शीर्ष-बाएं वर्ग (0, 0) है, और निचला-दायां वर्ग (N-1, N-1) है। एक शूरवीर एक सेल से 8 अलग-अलग कोशिकाओ

  1. विजुअल स्टूडियो में सी++ के साथ शुरुआत करना

    यह मार्गदर्शिका आपको ऐसे कई टूल और डायलॉग बॉक्स से परिचित होने में मदद करेगी जिनका उपयोग आप Visual Studio के साथ C++ में एप्लिकेशन विकसित करते समय कर सकते हैं। इस IDE में काम करने के बारे में और जानने में आपकी मदद करने के लिए हम एक Hello, World - स्टाइल कंसोल एप्लिकेशन बनाएंगे। आवश्यकताएं अनुसरण करन