ในปัญหานี้ เราได้รับค่าสี่ค่า p, q, r, s งานของเราคือค้นหาความน่าจะเป็นที่ผู้เล่นจะชนะเมื่อมีความน่าจะเป็นที่จะโดนเป้าหมาย
ที่นี่เรามีผู้เล่นสองคนที่กำลังเล่นเกมยิงธนูอยู่ และความน่าจะเป็นของผู้เล่น 1 คนที่จะโจมตีเป้าหมายถูกกำหนดเป็น p/q . ความน่าจะเป็นที่ผู้เล่น 2 จะโจมตีเป้าหมายถูกกำหนดเป็น r/s เราต้องหาความน่าจะเป็นของผู้เล่นคนหนึ่งที่จะชนะเกม
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
p =3, q =5, r =2, s =5
ผลลัพธ์
0.789
แนวทางการแก้ปัญหา
*วิธีนี้ต้องใช้ความรู้เรื่องความน่าจะเป็น
เนื่องจากไม่มีการจำกัดจำนวนครั้งที่ผู้เล่นสามารถได้รับโอกาสในการโจมตีเป้าหมายได้ ทั้งสองสามารถบรรลุเป้าหมายจำนวนครั้งใด ๆ ซึ่งทำให้การคำนวณสถานการณ์ที่ชนะนั้นขึ้นอยู่กับจำนวนการทดลองใช้
ดังนั้น
สมมติว่าความน่าจะเป็นที่ผู้เล่นคนหนึ่งจะโจมตีเป้าหมายคือ P1 =p/q นี่ทำให้ความน่าจะเป็นที่จะพลาด 1 - p/q
สมมติว่าความน่าจะเป็นของผู้เล่นสองคนที่โจมตีเป้าหมายคือ P2 =r/s ซึ่งทำให้ความน่าจะเป็นที่จะพลาด 1 - r/s
ตอนนี้ สำหรับการทดลองที่ไม่จำกัดจำนวนครั้ง ความน่าจะเป็นที่ผู้เล่น 1 ชนะสามารถเป็นได้
<ก่อน>000win(P1) + (แพ้(P1)*แพ้(P2)*ชนะ(P1)) +(แพ้(P1)*แพ้(P2)*แพ้(P1)*แพ้(P2)*ชนะ(P1) + ….ซึ่งสามารถกำหนดได้เป็น
P1 + ((1 - P1)*(1 - P2)*(P1)) + ((1 - P1)*(1 - P2)*(1 - P1)*(1 - P2)*(P1)) …
นี่คือ GP ที่ไม่มีที่สิ้นสุดที่ไหน
A =P1R =[(1 - P1)*(1 - P2)]
ผลรวมจะเป็น
S =A/ (1- R) เนื่องจาก R น้อยกว่า 1
$$S=\left(\frac{\left(\frac{p}{p}\right)}{1-\left(1-\frac{p}{p}\right)*\left(1- \frac{p}{p}\right)}\right)$$
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#includeใช้เนมสเปซ std;double calcWinningPropP1(double p, double q, double r, double s){ return (p / q) / (1 - ( (1 - (p/q))) * ( 1 - (r/s)) ) );}int main() { double p =3, q =5, r =2, s =5; cout<<"ความน่าจะเป็นของผู้เล่น 1 คนที่ชนะคือ "< ผลลัพธ์
ความน่าจะเป็นของผู้เล่น 1 คนที่จะชนะคือ 0.789474