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