สำหรับผู้เล่นสองคน สมมุติว่า 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