สิ่งที่น่าพิศวงเป็นเกมบาสเกตบอลที่ผู้เล่นผลัดกันยิง มันถูกเล่นเป็นลำดับของการแข่งขันสำหรับผู้เล่นสองคนโดยแต่ละคนมีความเป็นไปได้ที่จะ "เตะออก" หนึ่งในผู้เล่นเหล่านั้น
สมมติว่าผู้เล่นมีA B C D
โอกาสในการยิงและจัดทำตะกร้า0.1 0.2 0.3 0.4
ตามลำดับโดยไม่ขึ้นกับผู้เล่นอื่นในการแข่งขัน ผู้เล่นสองคนที่อยู่ด้านหน้าของแถวA
และB
"ต่อสู้" ตั้งแต่A
ไปก่อนเขาเป็นผู้พิทักษ์ตกอยู่ในอันตรายจากการถูกกำจัดและB
เป็นผู้โจมตีและไม่ตกอยู่ในอันตรายจากการกำจัดทันที A
ถ่ายภาพก่อน ถ้าA
ทำให้A
สำเร็จป้องกันได้สำเร็จและไปที่ด้านหลังของบรรทัด B C D A
สายจะเปลี่ยนไป ถ้าA
ไม่ทำก็ให้B
ยิง ถ้าB
ทำแล้วA
จะออกและไปที่หลังของบรรทัดเพื่อให้กลายเป็นเส้นB
C D B
ถ้าไม่A
หรือB
ทำให้เป็นกระบวนการซ้ำด้วยการA
ยิงอีกครั้งจนกระทั่งA
หรือB
ทำตะกร้า
สมมติว่าบรรทัดเปลี่ยนเป็นB C D A
( A
เคยป้องกันได้สำเร็จ) ตอนนี้B
และC
"ต่อสู้" ด้วยB
การเป็นผู้พิทักษ์และC
เป็นผู้โจมตี กระบวนการนี้ทำซ้ำจนกว่าจะเหลือเพียงคนเดียวเท่านั้น บุคคลนั้นเป็นผู้ชนะ
งานของคุณคือการคำนวณความน่าจะเป็นของผู้ชนะแต่ละคนที่ได้รับโอกาสที่จะทำตะกร้า
อินพุต :
รายการของตัวเลขเช่น0.1 0.2
หรือ0.5 0.5 0.5 0.5
ที่ซึ่งหมายเลขnเป็นโอกาสที่ผู้เล่นที่nจะทำตะกร้า คุณสามารถรับอินพุตนี้ในรูปแบบใดก็ได้ที่คุณต้องการรวมถึงเป็นพารามิเตอร์ในฟังก์ชัน
ผลผลิต :
รายชื่อหมายเลขที่หมายเลขnเป็นโอกาสที่ผู้เล่นที่nจะชนะเกม หมายเลขของคุณจะต้องแม่นยำอย่างน้อยสองตำแหน่งทศนิยมอย่างน้อย 90% ของเวลา ซึ่งหมายความว่าคุณสามารถใช้วิธีการจำลองตาม อย่างไรก็ตามหากรหัสของคุณไม่ได้เป็นแบบจำลอง ( รับประกันว่าจะคืนคำตอบที่ถูกต้องให้กับตำแหน่งทศนิยมอย่างน้อย 6 ตำแหน่ง) จากนั้นให้ลด 30% จากคะแนนของคุณ
ตัวอย่างระหว่าง0.5 0.5
: เรียกผู้เล่นและA
B
อนุญาตp
เป็นความน่าจะเป็นของการชนะ A
มี2/3
โอกาสประสบความสำเร็จในการป้องกัน (เนื่องจากมี1/2
โอกาสที่จะA
ทำคะแนน, 1/4
โอกาสที่A
พลาดและB
ทำคะแนน, และ1/4
โอกาสที่ทั้งพลาดและทำซ้ำ) หากA
ล้มเหลวในการปกป้องเขาจะถูกกระแทกและB
ชนะ หากปกป้องแล้วสายจะกลายเป็นA
B A
เนื่องจากสถานการณ์เป็นสมมาตรความน่าจะเป็นของการชนะคือA
(1 - p)
เราได้รับ:
p = 2/3 * (1 - p) + 1/3 * 0
. p = 2/5
แก้ที่เราได้รับ เอาท์พุทควรจะเป็นหรือ2/5 3/5
0.4 0.6
ฉันไม่ดีพอที่มีความเป็นไปได้ที่จะทำตัวอย่างที่ซับซ้อนมากขึ้น
หากคุณต้องการกรณีทดสอบเพิ่มเติมนี่คือตัวอย่าง:
0.1 0.2 0.3 0.4 --> 0.01 0.12 0.25 0.62
0.99 0.99 --> 0.5 0.5 (it's not exact, but if you round to two decimal places, you get 0.5 and 0.5)