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

ความน่าจะเป็นของ A ที่จะชนะการแข่งขันเมื่อความน่าจะเป็นของแต่ละคนที่จะชนเป้าหมายที่กำหนดใน C ++


สำหรับผู้เล่นสองคน สมมุติว่า A และ B ต่างก็พยายามที่จะได้จุดโทษจากการชนะการแข่งขัน ด้วยตัวแปรจำนวนเต็มสี่ตัว a, b, c, d ดังนั้นความน่าจะเป็นที่ A จะได้รับโทษก่อนคือ a / b และความน่าจะเป็นที่ B จะได้รับโทษก่อนคือ c / d

ผู้ที่ยิงจุดโทษก่อนจะชนะการแข่งขันและตามโปรแกรมแจ้งปัญหาที่กำหนดจะต้องค้นหาความน่าจะเป็นที่ A จะชนะการแข่งขัน

ป้อนข้อมูล

a = 10, b = 20, c = 30, d = 40

ผลผลิต

probability is 0.5333

ป้อนข้อมูล

a = 1, b = 2, c = 10, d = 11

ผลผลิต

probability is 0.523

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ป้อนค่าตัวแปรจำนวนเต็มสี่ตัว a, b, c, d

  • ลบความน่าจะเป็นของ B ที่ชนะการแข่งขันออกจากความน่าจะเป็นทั้งหมด แล้วเราจะได้ความน่าจะเป็นที่เป็นผลลัพธ์ของ A ที่ชนะการแข่งขัน

    e * (1 / (1 - (1 - f) * (1 - f))))

    โดยที่ e คือความน่าจะเป็นที่ A จะชนะการแข่งขัน และ f คือความน่าจะเป็นที่ B จะชนะการแข่งขัน

  • แสดงความน่าจะเป็นของ A ที่จะชนะการแข่งขัน

อัลกอริทึม

Start
Step 1→ Declare function to calculate the probability of winning
   double probab_win(int a, int b, int c, int d)
      Declare double e = (double)a / (double)b
      Declare double f = (double)c / (double)d
      return (e * (1 / (1 - (1 - f) * (1 - f))))
Step 2→ In main()
   Declare variable as int a = 10, b = 20, c = 30, d = 40
   Call probab_win(a, b, c, d)
Stop

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
// calculate the probability of winning the match
double probab_win(int a, int b, int c, int d){
   double e = (double)a / (double)b;
   double f = (double)c / (double)d;
   return (e * (1 / (1 - (1 - f) * (1 - f))));
}
int main(){
   int a = 10, b = 20, c = 30, d = 40;
   cout<<"probability is "<<probab_win(a, b, c, d);
   return 0;
}

ผลลัพธ์

หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -

probability is 0.5333