इस समस्या में, हमें एक फ़ंक्शन बनाना होगा जो दी गई संभावना के आधार पर तीन नंबर उत्पन्न करेगा।
इसके लिए, हम बिल्ट-इन रैंडम नंबर जेनरेटर फंक्शन का उपयोग करेंगे जो रैंड (ए, बी) है जो समान संभावना के साथ रेंज [ए, बी] के भीतर रैंडम नंबर जेनरेट करता है।
हमारा काम केवल तीन नंबर ए, बी, सी को वापस करना है, जिसमें क्रमशः पी (ए), पी (बी), पी (सी) के रूप में होने की संभावना है और संभावना पी (ए) + पी (बी) की परिभाषा के अनुसार है। + पी(सी) =1.
रैंड (ए, बी) का उपयोग करके हमारे फ़ंक्शन को बनाने के लिए। हम इसकी विशेषता का उपयोग करेंगे कि a से b तक किसी भी संख्या के आने की प्रायिकता समान होती है। लेकिन हमें प्रायिकता P(A) इत्यादि के साथ A प्राप्त करना होगा। इसलिए, इसके लिए, हम संख्याओं की प्रतिशत प्रायिकता का उपयोग करेंगे अर्थात यदि P(A) =1/5, तो हम इसे 20% मानेंगे।
तो, अधिकतम प्रायिकता प्रतिशत 100% होगा, इसलिए हम 0 से 100 तक एक यादृच्छिक संख्या उत्पन्न करेंगे और उत्पन्न संख्या के आधार पर हम निम्नलिखित स्थितियों के आधार पर A, B, C के बीच की संख्याएँ लौटाएंगे।
केस 1 - अगर जनरेट की गई संख्या 0 और P(A) के बीच है, तो A.
. लौटाएंकेस 2 - यदि उत्पन्न संख्या P(A) और P(A)+P(B) के बीच है, तो B लौटाएं।
केस 3 - यदि उत्पन्न संख्या P(A)+P(B) और 1{P(A)+P(B)+P(C)} के बीच है, तो C.
लौटाएंआइए एक उदाहरण देखते हैं जो अवधारणा को स्पष्ट कर देगा,
इनपुट
A = 3 , P(A) = 35% B = 43, P(B) = 50% C = 90, P(C) = 15%
कार्यक्रम वापस आ जाएगा,
3 अगर रैंड फ़ंक्शन 0 और 35 के बीच संख्या उत्पन्न करता है।
43 अगर रैंड फ़ंक्शन 35 और 85 के बीच संख्या उत्पन्न करता है।
90 यदि रैंड फ़ंक्शन 85 और 100 के बीच संख्या उत्पन्न करता है।
हमारे तर्क के कार्यान्वयन को दिखाने के लिए कार्यक्रम,
उदाहरण
#include<iostream> using namespace std; int randomABC(int A, int B, int C, int PA, int PB, int PC){ int randNumber = rand()%100+1; if (randNumber <= PA) return A; if (randNumber <= (PA+PB)) return B; else return C; } int main(){ cout<<"Random number between 3, 45, 90 with given probabilities is : "<<randomABC(3, 43, 90, 35, 40, 25); return 0; }
आउटपुट
Random number between 3, 45, 90 with given probabilities is : 3