যোগফল এবং ডাইস জোড়া কতবার নিক্ষেপ করা হবে তা ইনপুট হিসেবে দেওয়া আছে এবং কাজ হলো ডাইস জোড়া N বার নিক্ষেপ করে দেওয়া যোগফল পাওয়ার সম্ভাবনা নির্ণয় করা।
সম্ভাবনা হলো উপলব্ধ ডেটা সেট থেকে প্রত্যাশিত আউটপুট পাওয়ার সুযোগ। সম্ভাবনার পরিসীমা ০ থেকে ১, যেখানে ০ অসম্ভাব্যতা এবং ১ নিশ্চয়তা নির্দেশ করে।
উদাহরণ
ইনপুট: sum = 12, N = 1 আউটপুট: Probability = 1/36 ব্যাখ্যা: ডাইস জোড়া একবার নিক্ষেপ করলে কম্বিনেশনগুলো হবে (1,1), (1,2)... (6,6)। এই মধ্যে যোগফল ১২ শুধু (6,6)-এ পাওয়া যায়, তাই সম্ভাবনা ১/৩৬। ইনপুট: sum = 4, N = 6 আউটপুট: probability is : 1/2985984
প্রোগ্রামে ব্যবহৃত পদ্ধতি -
- যোগফল এবং N (নিক্ষেপের সংখ্যা) ইনপুট নেওয়া।
- সম্ভাবনা গণনার সূত্র: (favorable/total) ^ N
- প্রথমে ১বার নিক্ষেপে সেই যোগফল পাওয়ার সম্ভাবনা বের করা।
- তারপর N বার নিক্ষেপে সম্ভাবনা = (সম্ভাবনা ১) ^ N।
অ্যালগরিদম
শুরু
ধাপ ১ -> সম্ভাবনা গণনার ফাংশন ঘোষণা
int probability(int sum, int times)
float res = 0.0 এবং total = 36.0 ঘোষণা এবং সেট
long int probab = 0 ঘোষণা এবং সেট
লুপ i = 1 থেকে i <= 6 এবং i++
লুপ j = 1 থেকে j <= 6 এবং j++
যদি ((i + j) == sum)
res++ সেট
শেষ
শেষ
শেষ
int gcd1 = __gcd((int)res, (int)total) ঘোষণা এবং সেট
res = res / (float)gcd1 সেট
total = total / (float)gcd1 সেট
probab = pow(total, times) সেট
return probab
ধাপ ২ -> main()-এ
int sum = 4 এবং times = 6 ঘোষণা এবং সেট
probability(sum, times) কল
শেষ
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
// ২টি ডাইস N বার নিক্ষেপ করে যোগফল পাওয়ার সম্ভাবনা
int probability(int sum, int times) {
float res = 0.0, total = 36.0;
long int probab = 0;
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= 6; j++) {
if ((i + j) == sum)
res++;
}
}
int gcd1 = __gcd((int)res, (int)total);
res = res / (float)gcd1;
total = total / (float)gcd1;
probab = pow(total, times);
return probab;
}
int main() {
int sum = 4, times = 6;
cout << "probability is : ";
cout << "1" << "/" << probability(sum, times);
return 0;
}
আউটপুট
probability is : 1/2985984