Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में N बार पासा फेंकने के बाद बिंदुओं की अधिकतम संख्या


दिए गए कार्य को देखते हुए अधिकतम संख्या में बिंदुओं की गणना करना है जो N बार M चेहरे वाले पासे को फेंकने के बाद अपेक्षित हो सकते हैं।

पासे के पहले फलक में 1 बिंदु, दूसरे फलक में 2 बिंदु आदि हैं। इसी तरह एम-वें चेहरे में एम संख्या में बिंदु होते हैं।

प्रत्येक चेहरे के दिखने की प्रायिकता 1/M हो जाती है।

आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -

इनपुट - एम=2, एन=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

इनपुट - एम=2, एन=2

आउटपुट - 1.75

निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है

  • ऐसे मामलों की अधिकतम संख्या जिनमें कोई संख्या हो सकती है, सूत्र - i N का उपयोग करके इसकी पिछली संख्या का उपयोग करके पाया जा सकता है। - (i-1) N

    उदाहरण के लिए यदि M=4 और N=2, ऐसे मामलों की कुल संख्या जिनमें अधिकतम =4 4 2 होगा - (4-1) 2 =7.

    तो अंतिम उत्तर इस सूत्र को 1 से M तक के प्रत्येक तत्व पर लागू करना होगा -

    (मैं * (मैं एन - (i - 1) N )) / एम N और उन्हें जोड़ना।

  • फ़ंक्शन में MaxExpect() योग को संग्रहीत करने के लिए एक चर max =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. लक्ष्य x प्राप्त करने के लिए पासा रोल की संख्या गिनने के लिए C++ कोड

    मान लीजिए हमारे पास एक संख्या x है। हमारे पास एक छह मुखी पासा है और उसके फलकों की संख्या 2 से 7 तक है। हमें पासे से ठीक x अंक चाहिए। जब हम पासे फेंकते हैं तो हमारे लक्ष्य तक पहुंचने के लिए अंकित संख्या को जोड़ा जाएगा। हम वास्तव में पासा रोल की संख्या के बारे में परवाह नहीं करते हैं, इसलिए हम केवल यह

  1. C++ में दिए गए ऑपरेशन को q बार लागू करने के बाद सरणी में विभिन्न संख्याओं की संख्या ज्ञात कीजिए

    इस समस्या में, हमें एक संख्या N दी जाती है जो एक सरणी के आकार की होती है जिसमें सभी शून्य और Q निम्न प्रकार के प्रत्येक प्रश्न होते हैं - यह क्वेरी एस से ई (दोनों समावेशी) से वैल तक सभी तत्वों को अपडेट कर देगी। हमारा कार्य दिए गए ऑपरेशन q बार लागू करने के बाद सरणी में विभिन्न संख्याओं की संख्या ज्

  1. सी ++ पथ लंबाई जिसमें अधिकतम संख्या में मोड़ हैं

    एक समस्या को हल करने के लिए जिसमें हमें एक बाइनरी ट्री दिया जाता है। अब हमें उस पथ को खोजने की आवश्यकता है जिसमें अधिकतम संख्या में मोड़ हों। यानी, एक मोड़ तब माना जाता है जब पथ की दिशा बाएं से दाएं या इसके विपरीत बदलती है, उदाहरण के लिए इनपुट - आउटपुट - 6 अब इस दृष्टिकोण में, हम पेड़ से गुजरें