เล่นป๊อกเด้งอย่างไรให้ได้ตัง? ถอดกลยุทธ์การเล่นป๊อกเด้งจาก Data Science [ตอนที่ 1]

ป๊อกเด้งเป็นเกมไพ่ที่ได้รับความนิยมทั่วไป โดยเฉพาะอย่างยิ่งสำหรับการออกทริปต่างจังหวัดกับเพื่อนฝูง ด้วยกติกาที่เข้าใจง่าย ใช้เวลาในการเล่นไม่นาน และสามารถเพิ่มความท้าทายได้ด้วยการวางเงินเดิมพัน

แต่สำหรับผู้ที่ชื่นชอบในการวางกลยุทธ์ขับเคี่ยวกันด้วยสติปัญญา ป๊อกเด้งอาจไม่ใช่เกมที่ตอบโจทย์เท่าไหร่นัก เนื่องจากมักถูกมองว่าเป็นเกมที่ผลแพ้-ชนะนั้นพึ่งพาอาศัยดวงมากกว่าฝีมือ

บทความนี้จะพาทุกคนไปสำรวจกันว่าแท้จริงแล้ว ป๊อกเด้งเป็นเกมที่ใช้แต่ดวงจริง ๆ อย่างที่ใคร ๆ เค้าว่ากัน หรือเราสามารถดำเนินกลยุทธ์บางอย่างเพื่อให้การเล่นของเรามีประสิทธิภาพสูงสุด ผ่านการใช้กระบวนการของ Data Science

สำหรับตอนที่ 1 เราจะมาวิเคราะห์กันว่าแนวทางการเล่นที่ดีที่สุดสำหรับตำแหน่ง “ลูกมือ” เป็นอย่างไร

ปูพื้นกันก่อน

สำหรับกฎกติกาที่จะใช้สำหรับการเล่นป๊อกเด้งในบทความนี้ก็จะเหมือนกฎทั่ว ๆ ไป เริ่มด้วยการแจกไพ่ให้ผู้เล่นคนละ 2 ใบ คิดคะแนนจากไพ่ทั้ง 2 ใบรวมกัน แล้วเปรียบเทียบระหว่างลูกมือและเจ้ามือ

กลไกสำคัญที่(อาจ)ส่งผลให้ป๊อกเด้งเป็นเกมไพ่ที่ต้องอาศัยมากกว่าดวงในการเป็น
ผู้กุมชัยชนะ คือในกรณีที่ไม่มีใครถือ [ป๊อก8] หรือ[ป๊อก9] ผู้เล่นสามารถเลือกหยิบไพ่ใบที่ 3 เพื่อนำมาคิดคะแนนรวมกับไพ่ 2 ใบแรกได้ โดยลำดับของคะแนนที่ได้ เรียงจากสูงสุดลงไปต่ำสุดดังนี้

ป๊อก9>ป๊อก8>ตอง>เรียงดอก>เรียง>เซียน>9หลัง>8หลัง>7>…>1>บอด
จำนวนเด้งไม่มีผลต่อการแพ้ชนะ เป็นเพียงตัวคูณสำหรับเงินเดิมพันเท่านั้น

ซึ่งการเลือก “อยู่” (ไม่หยิบไพ่เพิ่ม) หรือ “จั่ว” (หยิบไพ่เพิ่ม) ให้ถูกจังหวะนั้น อาจเป็นหนึ่งในกุญแจสำคัญที่ช่วยให้เราสามารถควบคุมทิศทางการเล่นและสามารถนำเราไปสู่ผลลัพธ์ที่ต้องการได้

วิเคราะห์ยังไง?

เพื่อให้ได้มาซึ่งข้อมูลที่จำเป็นสำหรับการวิเคราะห์หาแนวทางการเล่นที่ดีที่สุด เราจะใช้การเขียนโค้ด Python สำหรับการจำลองสถานการณ์การแข่งขันป๊อกเด้งระหว่างลูกมือและเจ้ามือแบบสุ่มทั้งหมด 100,000 ครั้ง (ใช่ครับ หนึ่งแสนครั้ง!) ได้ผลลัพธ์ออกมาเป็น Dataframe หน้าตาประมาณนี้

จริง ๆ มีอีก 99,990 บรรทัด แต่เอามาหมดกลัวคอมจะระเบิดไปซะก่อน

โดย column ที่ขึ้นต้นด้วย player จะเป็นของฝ่ายลูกมือ ส่วน dealer เป็นของฝ่ายเจ้ามือ เริ่มต้นที่แต่ละฝ่ายมีไพ่คนละ 2 ใบ เมื่อจั่วใบที่ 3 ไพ่และมือที่ได้จะอยู่ใน column ที่เป็น new_card และ new_hand

สังเกตว่า column ที่ชื่อว่า dealer_new_card จะถูกแบ่งออกเป็น 2 column เนื่องจากในกรณีที่ลูกมือไม่ได้หยิบไพ่เพิ่ม หากเจ้ามือเลือกจั่วไพ่ ไพ่ใบบนสุดจะเป็นของเจ้ามือ ในทางกลับกัน หากลูกมือหยิบไพ่ใบนั้นไป เจ้ามือจะได้ไพ่ใบถัดไปมาแทน

นอกจากนี้ จุดสังเกตอีกอย่างคือถ้าในกรณีที่คนใดคนหนึ่งได้ [ป๊อก8] หรือ [ป๊อก9] จะไม่มีผู้เล่นคนไหนได้หยิบไพ่เพิ่มอีก เนื่องจากเกมจะจบลงทันที (ส่งผลให้ column card และ new_card จะเป็นไพ่ชุดเดียวกัน)

ได้อะไรบ้างจากข้อมูลเบื้องต้น?

จากการมองข้อมูลแว๊บแรก เราสามารถเขียนโค้ดเพื่อ visualize ข้อมูลบางอย่างได้ อาทิ ไพ่แบบไหนมีโอกาสออกมากที่สุด (hand frequency) ไพ่ที่เราถือมีโอกาสชนะมากน้อยเพียงใด (win percentage) หรือมีรายได้ต่อมือเท่าไหร่ (income per hand)

จากภาพที่ 1 จะเห็นได้ว่าสำหรับไพ่ 2 ใบแรก เราสามารถแบ่งกลุ่มไพ่ได้เป็น 5 กลุ่ม ตามโอกาสในการออก ได้แก่
1. ไพ่[บอด]
2. ไพ่เลขคี่ [1][3][5][7][ป๊อก9]
3. ไพ่เลขคู่ [2][4][6][ป๊อก8]
4. ไพ่เลขคู่ 2เด้ง
5. ไพ่เลขคี่ 2เด้ง

สำหรับการวิเคราะห์โอกาสชนะและรายได้ต่อมือ เราสามารถตัดเกมที่ผู้เล่นมีไพ่ [ป๊อก8] หรือ [ป๊อก9] ออกจากการวิเคราะห์ของเราได้ เพราะไม่ว่าจะถือ [บอด] หรือ [7 สองเด้ง] ก็มีค่าเท่ากันอยู่ดี เพราะโดนอีกฝ่ายที่มีป๊อกกินตังไปเรียบร้อยแล้ว

ด้วยการเขียนโค้ดเพิ่มเติมเล็กน้อย เราสามารถคัดเฉพาะข้อมูลที่จำเป็นสำหรับการวิเคราะห์ในขั้นตอนต่อไปได้ ออกมาเป็น DataFrame ใหม่ที่กระชับกว่าเดิม (รึเปล่า)

ดูเหมือนลูกมือจะดวงไม่ค่อยดี เริ่มมาก็บอดไปแล้ว 2 เกมติด

จากตารางนี้ เราจะเห็นว่ามี column ใหม่ ๆ ถูกเพิ่มเข้าไป แต่ละ column จะขึ้นต้นด้วย 2v2 ไปจนถึง 3v3 ซึ่งเลขตัวหน้าหมายถึงจำนวนไพ่ของลูกมือ และเลขตัวหลังหมายถึงจำนวนไพ่ของเจ้ามือ

นอกเหนือจากนี้ column ที่ลงท้ายด้วย _re จะบอกถึงผลลัพธ์การแข่งจากฝ่ายลูกมือ ว่าชนะ(ได้) แพ้(เสีย) หรือเสมอ(ชน) และ column ที่ลงท้ายด้วย _port จะเป็นเงินที่ลูกมือได้รับจากตานั้น ๆ (สมมติให้เล่นกันตาละ 1 บาท)

ตัวอย่างเช่นเกมแรกที่ player_hand เป็น [บอด] และ dealer_hand เป็น [7] ถ้าไม่มีใครหยิบไพ่เพิ่ม ผลลัพธ์ของเกม (2v2_re) จะเป็นลูกมือ “เสีย” คิดเป็นมูลค่าเท่ากับ -1 บาท (2v2_port)

ถ้าหากลูกมือเลือกที่จะจั่ว ลูกมือจะได้รับไพ่ [A โพธิ์แดง] ไป (ดูตารางที่ 1) ซึ่งจะทำ
ให้คะแนนของมือเพิ่มจาก [บอด] เป็น [1หลัง] (ไม่ค่อยช่วยอะไรเล้ย) และถ้าหาก
เจ้ามือเลือกที่จะจั่วไพ่เพิ่มเช่นกัน เจ้ามือจะได้รับไพ่ [2 ดอกจิก] จากเดิมที่ถือคะแนนเท่ากับ [7] ก็จะกลายเป็น [9หลัง] ผลลัพธ์ (3v3_re) คือลูกมือ “เสีย” อยู่ดี

ทีนี้ เราที่อยู่ในตำแหน่งลูกมือจะรู้ได้อย่างไรล่ะ ว่าเมื่อไหร่ควรจะ “อยู่” หรือเมื่อไหร่ควรจะ “จั่ว” คำตอบก็ง่ายมาก ถ้าไพ่ที่ตัวเองถืออยู่เป็นมือที่ดีอยู่แล้วก็ไม่ต้องจั่ว ถ้าเป็นมือที่แย่ก็จั่วเพิ่มซะ

แล้วมือแบบไหนล่ะที่เรียกว่าดี? (อ้าว …)

The Good, the Bad, and the Risky

สำหรับขั้นตอนนี้ เราจะทำการย่อยข้อมูลจากตารางที่แล้วลงมาอีก โดยใช้มือที่เราได้เป็นเกณฑ์ในการจัดกลุ่มเพื่อเปรียบเทียบ performance ของมือแต่ละแบบ

ซึ่งตัวแปรที่เราจะใช้ในการเปรียบเทียบ ได้แก่โอกาสชนะ (win percentage) และรายได้ต่อมือ (income per hand) นั่นเอง

จากตาราง ถ้าเราลองจัดกลุ่มคร่าว ๆ โดยอิงจาก performance ของมือ เราสามารถแบ่งประเภทของมือได้เป็น 3 กลุ่มด้วยกัน (ตามเส้นสีม่วง) ได้แก่

กลุ่มที่ 1: Bad hands (โอกาสชนะน้อยกว่า 70% และมีรายได้ต่อมือน้อยกว่า 0)
ได้แก่ [1] [1 สองเด้ง] [2] [2 สองเด้ง] และ [3]
กลุ่มที่ 2: Risky hands (โอกาสชนะน้อยกว่า 70% แต่มีรายได้ต่อมือมากกว่า 0)
ได้แก่ [3 สองเด้ง] [4] [4 สองเด้ง] [5] และ [5 สองเด้ง]
กลุ่มที่ 3: Good hands (โอกาสชนะมากกว่า 70% และมีรายได้ต่อมือมากกว่า 0)
ได้แก่ [6] [6 สองเด้ง] [7] และ [7 สองเด้ง]

ซึ่งแนวทางการเล่นของมือกลุ่มที่ 1 และกลุ่มที่ 3 นั้นก็ค่อนข้างชัดเจนอยู่แล้ว ถ้าหากมือที่มีอยู่เป็น bad hand ก็ให้จั่วไพ่ใบที่ 3 เพื่อเพิ่มโอกาสชนะ ถ้าหากมือที่มีอยู่เป็น good hand ก็ไม่จำเป็นต้องจั่วไพ่เพิ่ม (ดีกว่าจั่วแล้วแต้มลด)

แล้วถ้าหากไพ่ที่มีอยู่เป็น risky hand ล่ะ? แบบจับได้ [4 สองเด้ง] งี้ ควรหยุด หรือจั่วเพิ่มอีกใบดี?

เนื่องจากไพ่ในกลุ่ม risky hand นับเป็นไพ่ที่มีความพิเศษบางอย่างสำหรับป๊อกเด้ง กล่าวคือ เป็นไพ่ที่เหมือนจะมีโอกาสชนะไม่เยอะ (น้อยกว่า 70%) แต่รายได้ต่อมือกลับเป็นบวก (ถ้าเล่นมือนี้ซ้ำ ๆ ไปเรื่อย ๆ ท้ายที่สุดแล้วเราจะได้เงินแทนที่จะเป็นเสียเงินนั่นแหละ)

ซึ่งการเลือกกลยุทธ์ให้ถูกว่าตอนไหนควร “อยู่” ตอนไหนควร “จั่ว” เมื่อได้มือที่เป็น risky hand นี่แหละ จะเป็นกุญแจสำคัญในการควบคุมผลการเล่นให้ออกมาดีที่สุดในแบบที่มันควรจะเป็น

เปรียบเทียบกันไปเลย

ทางที่จะรู้ได้ว่าตัวเลือกไหนเป็นตัวเลือกที่ดีกว่ากัน ก็คือการเอาทั้ง 2 ตัวเลือกมาเปรียบเทียบกันตรง ๆ ไปเลย โดยการดู long-term portfolio (ผลรวมรายได้) ของมือนั้น ๆ เมื่อต้องเจอกับมือของเจ้าหลาย ๆ แบบ

ถ้าจั่วแล้ว long-term portfolio เพิ่มมากกว่าเดิม ก็แสดงว่าการจั่วเป็นกลยุทธ์ที่ดีกว่าแต่ถ้าเงินลด ก็แสดงว่าไม่จั่วย่อมดีกว่านั่นเอง

เราสามารถแบ่งกรณีเปรียบเทียบได้เป็น 2 กรณีด้วยกัน ได้แก่ 1. เจ้ามือเล่นด้วยไพ่ 2 ใบ (ไม่จั่วเพิ่ม) และ 2. เจ้ามือเล่นด้วยไพ่ 3 ใบ (จั่วเพิ่ม)

performance ของ [3 สองเด้ง] และ [4] เมื่อเจอกับเจ้ามือ

จากภาพด้านบน เราจะเห็นว่าในกรณีที่ได้ไพ่ [3 สองเด้ง] หรือ [4] ผลรวมของเงิน (long-term portfolio) ของการจั่วไพ่ (เส้นสีแดง) อยู่สูงกว่าการไม่จั่วไพ่ (เส้นสีดำ) กล่าวคือ การจั่วไพ่เป็นกลยุทธ์ที่จะนำไปสู่ผลลัพธ์ที่ดีกว่า

performance ของ [4 สองเด้ง] [5] และ [5 สองเด้ง] เมื่อเจอกับเจ้ามือ

กลับกัน ถ้าหากเราถือ [4 สองเด้ง] [5] หรือ [5 สองเด้ง] การจั่วกลับให้ผลลัพธ์ที่แย่กว่าการไม่จั่ว (เส้นสีแดงอยู่ต่ำกว่าเส้นสีดำ)

พูดเป็นภาษาเศรษฐศาสตร์หน่อยก็คือในกรณีที่ได้ [3 สองเด้ง] หรือ [4] การ “จั่ว” จะเป็น dominant strategy (ไม่ว่าเจ้ามือจะทำอะไร แต่การจั่วนี่แหละเป็นทางเลือกที่ดีที่สุดของเรา) แต่ถ้าจับได้ [4 สองเด้ง] [5] หรือ [5 สองเด้ง] การ “อยู่” จะเป็น dominant strategy ของเราแทน

ทั้งนี้ทั้งนั้น นี่เป็นเพียงแนวทางการเล่นในกรณีที่เจ้ามือเล่นแบบไม่มีแบบแผนเท่านั้น!! (หรือก็คือแกนึกจะจั่วก็จั่ว ได้ 6 ได้ 7 แกก็จั่ว ได้บอดแต่ไม่จั่ว อะไรทำนองนั้น) ซึ่งในสถานการณ์จริง คนที่เล่นเป็นเจ้ามือย่อมมีแนวทางอยู่แล้วว่าเมื่อไหร่ควรจะ “อยู่” หรือเมื่อไหร่ควรจะ “จั่ว”

ดังนั้น ในการที่จะเลือกกลยุทธ์สำหรับการเล่นที่มีประสิทธิภาพที่สุด เราจำเป็นจะต้องคำนึงถึงรูปแบบการเล่นของเจ้ามือด้วย

แล้วเจ้ามือเล่นแบบไหนได้บ้าง?

หากเรายึดหลักการเล่นจากโป๊กเกอร์ เราสามารถจำแนกสไตล์การเล่นของเจ้ามือออกเป็น 2 ประเภทหลัก ๆ ด้วยกัน ได้แก่การเล่นแบบ tight และการเล่นแบบ loose

การเล่นแบบ tight ก็คือเล่นเฉพาะมือที่ดี ในขณะที่การเล่นแบบ loose คือการเล่นมือที่อาจไม่ได้ดีมากนัก แต่ใช้การลักไก่หรือเทคนิคอื่น ๆ ในการเอาชนะคู่แข่ง

หากเราใส่เงื่อนไขเหล่านี้ให้กับเจ้ามือ โดยกำหนดให้เจ้ามือจั่วเฉพาะเมื่อได้แต้มน้อยกว่า [6] เป็น tight hand (ไม่เสี่ยงเมื่อมือไม่ดี) และจั่วเฉพาะเมื่อแต้มน้อยกว่า [4] เป็น loose hand (กล้าเดิมพันกับมือแต้มน้อย)

เริ่มจากให้เจ้ามือเล่นแบบ loose hand

performance ของ [3 สองเด้ง] และ [4] เมื่อเจ้ามือเล่นแบบ loose hand

จะเห็นว่ากลยุทธ์ของการเล่น [3 สองเด้ง] และ [4] ยังเหมือนเดิม คือจั่วไว้ก่อนยังไงก็ดีกว่าการอยู่เฉย ๆ

performance ของ [5 สองเด้ง] เมื่อเจ้ามือเล่นแบบ loose hand

กลยุทธ์ของการเล่น [5 สองเด้ง] ก็ยังเหมือนเดิม คือไม่ต้องจั่วเพิ่มแล้ว

performance ของ [4 สองเด้ง] และ [5] เมื่อเจ้ามือเล่นแบบ loose hand

แต่ แต่ แต่ !!! กลยุทธ์ของการเล่น [4 สองเด้ง] หรือ [5] จะไม่เหมือนเดิมอีกต่อไป คือถ้าหากเจ้ายังเล่นด้วยไพ่ 2 ใบ (ไม่จั่วเพิ่ม) การเล่นที่ดีที่สุดของเราก็คือการไม่จั่วเพิ่มเช่นกัน แต่ถ้าหากเจ้าจั่วเพิ่มเมื่อไหร่ การจั่วไพ่กลับกลายเป็นกลยุทธ์ที่ดีกว่า

หรือก็คือ ถ้าหากเจ้าเล่นแบบมีแบบแผนมากขึ้น เราจะเสีย dominant strategy ของเราไปในทันที!

แล้วถ้าเจ้ามือเล่นแบบ tight hand บ้างล่ะ

performance ของมือประเภท risky hand เมื่อเจ้ามือเล่นแบบ tight hand

ผลลัพธ์แทบจะเหมือนกับเวลาเจ้ามือเล่นแบบ loose hand เลย! (แต่แตกต่างกันที่ผลได้-เสียของเงินเดิมพัน ซึ่งเราจะมาวิเคราะห์กันต่อในบทถัดไป)

สรุปแล้วเป็นลูกมือต้องเล่นยังไง?

หลังจากวิเคราะห์กันมาเนิ่นนาน กล่าวโดยสรุปก็คือถ้าหากเราเป็นลูกมือที่ไปเล่นป๊อกเด้งกับเจ้ามือที่เล่นแบบมีแบบแผน (รู้ว่าเมื่อไหร่ควรอยู่ เมื่อไหร่ควรจั่ว)

ถ้าหากมือเริ่มต้นเราได้มือที่น้อยกว่า [5 สองเด้ง] ให้จั่วไพ่เพิ่มเพื่อเพิ่มโอกาสชนะ 
แต่ถ้าได้มือที่เป็น [5 สองเด้ง] หรือสูงกว่า ก็ไม่จำเป็นต้องจั่วไพ่เพิ่มแล้วนั่นเอง

ซึ่งในบทต่อไป เราจะมาวิเคราะห์กันต่อสำหรับฝ่ายเจ้ามือ ว่าในเมื่อเรารู้แล้วว่าลูกมือของเราจะเล่นแบบนี้ เรา(ในฐานะเจ้ามือ)จะต้องเล่นแบบไหนเพื่อให้มีโอกาสชนะมากที่สุด!

สำหรับผู้ที่สนใจในพาร์ทการเขียนโค้ด