এই সমস্যায়, আমাদের একটি ফাংশন তৈরি করতে হবে যা প্রদত্ত সম্ভাব্যতার উপর ভিত্তি করে তিনটি সংখ্যা তৈরি করবে।
এর জন্য, আমরা বিল্ট-ইন র্যান্ডম নম্বর জেনারেটর ফাংশন ব্যবহার করব যা rand(a, b) যা সমান সম্ভাবনা সহ [a, b] সীমার মধ্যে র্যান্ডম সংখ্যা তৈরি করে।
আমাদের কাজ হল শুধুমাত্র তিনটি সংখ্যা A, B, C যা যথাক্রমে P(A), P(B), P(C) এবং সম্ভাব্যতার সংজ্ঞা অনুযায়ী P(A) + P(B) হিসাবে সংঘটিত হওয়ার সম্ভাবনা রয়েছে। + P(C) =1.
Rand(a,b) ব্যবহার করে আমাদের ফাংশন তৈরি করতে। আমরা এর বৈশিষ্ট্যটি ব্যবহার করব যে 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