কম্পিউটার

C++ এ একটি ডাইস N বার নিক্ষেপ করার পর ডটের সর্বোচ্চ সংখ্যা


প্রদত্ত কাজটি হল M মুখ বিশিষ্ট একটি ডাইস N বার ছুঁড়ে দেওয়ার পরে প্রত্যাশিত সর্বোচ্চ সংখ্যক বিন্দু গণনা করা৷

ডাইসের প্রথম মুখটিতে 1টি বিন্দু রয়েছে, দ্বিতীয় মুখে 2টি বিন্দু রয়েছে ইত্যাদি। একইভাবে M-তম মুখে M সংখ্যক বিন্দু রয়েছে।

প্রতিটি মুখের উপস্থিতির সম্ভাবনা 1/M হয়ে যায়।

আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −

ইনপুট৷ − M=2, N=3

আউটপুট − 1.875

ব্যাখ্যা − পাশাটির 2টি দিক আছে ={1, 2}

যদি ডাইসটি 3 বার নিক্ষেপ করা হয় তবে নমুনা স্থান হবে =M N =2 3

{(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2,)
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2,)}
Maximum number in (1, 1, 1) = 1
Maximum number in (1, 1, 2) = 2
Maximum number in (1, 2, 1) = 2
Maximum number in (1, 2, 2) = 2
Maximum number in (2, 1, 1) = 2
Maximum number in (2, 1, 2) = 2
Maximum number in (2, 2, 1) = 2
Maximum number in (2, 2, 2) = 2
Probability of each case = 1/23 = 0.125
Therefore, expectation of maximum number = (1+2+2+2+2+2+2+2) * (0.125) = 1.875

ইনপুট − M=2, N=2

আউটপুট − 1.75

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • সর্বাধিক সংখ্যক ক্ষেত্রে যেখানে একটি সংখ্যা ঘটতে পারে তার পূর্ববর্তী সংখ্যাটি সূত্র ব্যবহার করে খুঁজে পাওয়া যেতে পারে − i N – (i-1) N .

    উদাহরণস্বরূপ যদি M=4 এবং N=2, তাহলে মোট ক্ষেত্রের সংখ্যা যেখানে সর্বোচ্চ =4 হবে 4 2 – (4-1) 2 =7.

    সুতরাং চূড়ান্ত উত্তরটি 1 থেকে M −

    পর্যন্ত প্রতিটি উপাদানে এই সূত্রটি প্রয়োগ করবে

    (i * (i N – (i - 1) N )) / M N এবং সেগুলি যোগ করা।

  • ফাংশনে MaxExpect() যোগফল সঞ্চয় করার জন্য একটি ভেরিয়েবল সর্বাধিক =0 টাইপ দ্বিগুণ শুরু করে।

  • তারপর i=M থেকে i>0

    পর্যন্ত লুপ করুন
  • লুপের ভিতরে উপরে উল্লিখিত সূত্রটি প্রয়োগ করুন এবং সমস্ত ফলাফলের মান পরিবর্তনশীল সর্বোচ্চে যোগ করতে থাকুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
double MaxExpect(double M, double N){
   double max = 0.0, i;
   for (i = M; i; i--)
      /*formula to find maximum number and
      sum of maximum numbers*/
      max += (pow(i / M, N) - pow((i - 1) / M, N)) * i;
      return max;
}
int main(){
   double M = 2, N = 3;
   cout << MaxExpect(M, N);
   return 0;
}

আউটপুট

আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −

1.875

  1. C++ কোড গুনতে কতবার পাথর দেওয়া যায়

  2. টার্গেট x পেতে ডাইস রোলের সংখ্যা গণনা করতে C++ কোড

  3. C++ এ প্রদত্ত অপারেশন q বার প্রয়োগ করার পরে অ্যারেতে বিভিন্ন সংখ্যার সংখ্যা খুঁজুন

  4. C++ পাথের দৈর্ঘ্য সর্বাধিক সংখ্যক বাঁক রয়েছে