Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การเพิ่มความน่าจะเป็นของประเภทเดียวจากคอนเทนเนอร์ N ใน C++


ความน่าจะเป็น Pi=(จำนวนผลลัพธ์ที่น่าพอใจ) / (จำนวนผลลัพธ์ทั้งหมด)

กำหนดเป็นตัวเลข N ซึ่งเป็นจำนวนคอนเทนเนอร์ที่มีอยู่ และเรามีสำเนาของตัวเลข X และ Y สองตัวจำนวน N ตัว ภารกิจคือการแบ่งสำเนาของตัวเลข X หนึ่งตัวออกเป็นคอนเทนเนอร์ N เพื่อให้ความน่าจะเป็นในการวาดสำเนาของ X นั้นสูงสุด จากด้านบนจะเห็นได้ว่าเพื่อเพิ่ม Pi ให้สูงสุด เราสามารถขยายตัวเศษให้มากที่สุด ( จำนวนผลลัพธ์ที่น่าพอใจ) หรือย่อตัวส่วนให้น้อยที่สุด (จำนวนผลลัพธ์ทั้งหมด) ซึ่งสามารถทำได้ในลักษณะที่มีเพียงคอนเทนเนอร์เดียวที่มีสำเนาของ Y และคอนเทนเนอร์ทั้งหมดมีสำเนาของ X คอนเทนเนอร์ N-1 มีสำเนาของ X แต่ละรายการ (สำเนา N-1 ของ X) และคอนเทนเนอร์ 1 รายการมีสำเนา Y และ N สำเนาของ Y 1 ชุด

ความน่าจะเป็น (สำเนาของ X จากคอนเทนเนอร์แรก (n-1)) =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 คอนเทนเนอร์และ 1 สำเนาของ X และ Y ในแต่ละคอนเทนเนอร์ ความน่าจะเป็นสูงสุดของการวาด 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