কম্পিউটার টিউটোরিয়াল

২টি ডাইস N বার নিক্ষেপ করে নির্দিষ্ট যোগফল পাওয়ার সম্ভাবনা C++-তে


যোগফল এবং ডাইস জোড়া কতবার নিক্ষেপ করা হবে তা ইনপুট হিসেবে দেওয়া আছে এবং কাজ হলো ডাইস জোড়া 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

  1. C++-এ রেঞ্জ সাম কোয়েরি - ইমিউটেবল (Range Sum Query - Immutable)

  2. ত্রিভুজে ন্যূনতম সম পথ বের করা (C++)

  3. সকল সাবসিকোয়েন্সের যোগফলের যোগফল (C++)

  4. C++-এ সম অ্যারে পাজল (Sum Array Puzzle) সমাধান