Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 N 컨테이너에서 한 유형의 확률 최대화


확률 Pi=(우호적인 결과의 수) / (총 결과의 수).

주어진 숫자 N은 존재하는 컨테이너의 수입니다. 그리고 우리는 두 개의 숫자 X와 Y의 N개의 복사본을 가지고 있습니다. 작업은 X의 복사본을 그릴 확률이 최대가 되도록 하나의 숫자 X의 복사본을 N개의 컨테이너로 나누는 것입니다. 위에서 Pi를 최대화하기 위해 분자( 유리한 결과 수)를 최대화하거나 분모(총 결과 수)를 최소화할 수 있음을 알 수 있습니다. 이것은 하나의 컨테이너에만 Y의 복사본이 있고 모든 컨테이너에 X의 복사본이 있는 방식으로 수행할 수 있습니다. N-1개의 컨테이너에는 각각 X의 복사본이 있습니다(X의 N-1개 복사본). 그리고 1개의 컨테이너에는 Y 사본 1개와 Y 사본 N개가 있습니다.

확률(첫 번째(n-1) 컨테이너의 X 복사) =Pn-1 =1

확률(마지막 컨테이너의 X 복사) =Pn =1/(n+1)

Pm = Pn-1 * (n – 1) + Pn
∴ Pm = n / (n + 1)

입력 - N=1

출력 − N=1의 최대 확률은 0.5입니다.

설명 - 컨테이너가 1개이고 X와 Y가 각각 1개씩 들어 있기 때문입니다. X를 뽑을 최대 확률은 0.5입니다.

입력 - N=3

출력 − N=1에 대한 최대 확률은 0.75입니다.

설명 − 여기 모든 컨테이너에는 X 사본 1개가 있고 마지막 컨테이너에는 Y 사본 3개가 모두 있습니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 컨테이너 개수인 N에 정수 값을 입력합니다.

  • X가 maxP라고 말할 확률의 최대값을 저장할 변수를 선언합니다.

  • 주어진 N에 대해 maxP를 N/(N+1)로 계산합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int main(){
   int N=3;
   double maxP = (double)N / (N + 1);
   cout << "Maximum Probability for N = " << N << " is, " <<maxP << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Maximum Probability for N = 3 is, 0.75