ComBioLaw.De » Blog » เขียนโปรแกรม » Simulation : หวยใต้ดิน vs ไฮโล

Simulation : หวยใต้ดิน vs ไฮโล

imageใคร ๆ ก็บอกว่า การพนันเป็นสิ่งไม่ดี แต่เท่าที่สังเกต ไม่ว่าห้องเรียนคณิตศาสตร์ว่าด้วยเรื่องของสถิติที่ใด ก็มักจะยกเอาเรื่องของการพนัน มาเป็นตัวอย่างให้นักเรียนคิด อย่างตอนที่ผมเรียน ก็มีทั้งหวย โป้กเก้อ ไฮโล และอื่น ๆ อีกมากมาย ที่ถูกนำมาตั้งโจทย์ทางคณิตศาสตร์ให้นักศึกษาได้คิดกัน แบบง่าย ๆ ก็จะคิดแค่ความน่าจะเป็น แบบยากขึ้นมาหน่อย ก็จะมีเรื่องของ expectation เข้ามาเกี่ยวข้องด้วย

มีโจทย์หนึ่งข้อ ที่ยากมาก ๆ แม้แต่ Prof. เองก็ยอมแพ้ แต่ก็ไม่ได้ออกมาเป็นข้อสอบ เพื่อแกล้งเด็ก นั่นก็คือ ต้องซื้อ Lotto (หวยเยอรมัน) อย่างน้อยเท่าไร และซื้ออย่างไรถึงจะถูกรางวัล หากวิธีการเล่น Lotto ง่ายเหมือนหวยบ้านเรา โจทย์ข้อนี้คงขาดความท้าทาย แต่ให้ตายเหอะ หวยเยอรมันมันซับซ้อนมากมาย จนวันนี้ผมก็ยังงง ๆ อยู่ว่ามันเล่นยังไง เลยกลายเป็นว่าโจทย์ข้อนี้จึงเป็นโจทย์คลาสสิก สำหรับวิชา combinatorics ไป

ปกติแล้ว เวลาจะดูว่าการพนันแบบไหน น่าเล่นกว่ากัน จะไม่ได้ดูแค่ความน่าจะเป็นอย่างเดียว ต้องดูค่า expectation ด้วย เวลาคำนวนก็ยากน่าดู เพราะเราไม่รู้ว่า PDF (probability density function) ของการพนันนั้น ๆ เป็นอย่างไร ด้วยความที่ผมเป็นวิศกรผู้ขี้เกียจ เลยใช้วิธี simulation เอา โดยผมได้นำการพนัน ที่นิยมเล่นที่สุดของคนไทยสองอย่าง นำมาเปรียบเทียบกัน นั่นก็คือ หวยใต้ดิน กับ ไฮโล ซึ่งผลการ Simulation เป็นดังนี้ ...

เขียนโปรแกรม เขียนโปรแกรม

bow_der_kleine bow_der_kleine

#!/usr/bin/python
 
from numpy.random import randint
 
def lotto(plays, num_per_play):
	money = 0
	wins = 0
	not_play = [111, 222, 333, 444, 555, 666, 777,
	888, 999, 012, 123, 234, 456, 678, 789, 987, 876,
	765, 654, 432, 321, 210]
	for i in xrange(plays):
		to_play = {}
		for j in xrange(num_per_play):
			pay = 10
			money = money-pay
			while True :
				play_num = randint(100,998)
				if not play_num in not_play and not play_num in to_play:
					break
			to_play[play_num] = pay
		win = randint(0,999)
		if win in to_play :
			money = money + 500 * to_play[win]
			wins = wins + 1
 
	print money/float(plays), wins/float(plays)
 
def hilo(plays) :
	money = 0
	wins = 0
	for i in xrange(plays):
		play = randint(1,7)
		win = [randint(1,7), randint(1,7), randint(1,7)]
		if play in win :
			money = money + 100
			wins = wins+1
		else :
			money = money - 100
	print money/float(plays), wins/float(plays)
 
if __name__ == '__main__' :
	hilo(1000000)
	lotto(100000 ,100)
	lotto(100000 ,10)
	lotto(100000 ,1)
plain code

ในตัวโปรแกรมผมได้ใช้ Gaussian PDF เป็นโมเดลในการ simulation เพราะรู้จักอยู่ตัวเดียว :P และในการเล่นหวย ผมได้ตัดเลขบางตัวออก ซึ่งดูแล้ว ไม่น่าจะมีคนซื้อ

ผลการ Simulation

การพนัน จำนวนเงินได้เสียต่อครั้ง โอกาสได้เงิน
ไฮโล

-15.812 0.42094
หวย (เล่น 100 เลขต่องวด)

-498.85 0.10023
หวย (เล่น 10 เลขต่องวด) -49.9 0.01002
หวย (เล่น 1 เลขต่องวด)

-5.2 0.00096

สรุป

  1. การพนันเป็นสิ่งไม่ดี เล่นยังไงก็แพ้
  2. หากอยากมีส่วนเกี่ยวข้องกับการพนัน เป็นเจ้ามือจะดีที่สุด เพราะมีแต่ได้กับได้ แต่โอกาสที่จะโดนตำรวจจับก็มีสูงกว่าเช่นกัน
  3. เล่นไฮโล มีโอกาสเสียเงินน้อยกว่าเล่นหวย
  4. จำนวนเลขในการเล่นหวยแต่ละงวด ไม่มีผลต่อรายจ่ายมวลรวม ยิ่งเล่นหลาย ๆ เลขในแต่ละงวด โอกาสถูกสูงขึ้น แต่ก็ต้องเสียเงินมากขึ้นเช่นกัน รวม ๆ แล้วค่าเท่ากัน จะเล่นงวดละเลข หรือจะเล่นงวดละร้อยเลข
  5. เอาเวลาเล่นการพนันไปทำงานดีกว่า ได้เงินแน่ ๆ
หมายเหตุ ที่จู่ ๆ ผมอยากรู้ขึ้นมา ว่า การพนันอันไหนน่าเล่นกว่ากัน ก็เพราะไปเที่ยวสวนสาธารณะแห่งหนึ่งในเบอร์ลินมา ซึ่งในที่นั้นเต็มไปด้วยคนไทยนับร้อย แล้วเหตุการณ์อันนั้น ก็สร้างแรงบรรดาลใจ ให้ผมเขียน simulation อันนี

23 Jul 07 | by | tags เขียนโปรแกรม Python การพนัน หวยใต้ดิน ไฮโล

read 7274

<<ฉะค่าสินไหม ! || ม็อบชนชั้นกลาง>>

พี่แปง

"ต้องดูค่า expectation ด้วย เวลาคำนวนก็ยากน่าดู เพราะเราไม่รู้ว่า PDF (probability density function) ของการพนันนั้น ๆ เป็นอย่างไร"

ตรงนี้ไม่เกี่ยวมังครับ

E[X] = sum_x (x*p_X(x))

p_X = probability mass function = the probability of the event {X=x}

ปล. สวนนั้นกลับมาเปิดอีกแล้วเหรอครับ ได้ข่าวว่าคนตุรกีไปแย่งขายแล้วทำสกปรกก็เลยโดนกวาดล้างไป(อีกครั้ง)

ครั้งก่อนหน้าโดนเพราะว่ามีคนไปกินปลาราดพริกแล้วท้องร่วง แล้วตรวจพบว่าเกิดจากอาหารสกปรก

ปล. 2 ใครอยากดูคนเยอรมันถือกระเช้าใส่เครื่องปรุงเสริฟลูกค้าก็ไปดูได้ที่นั่นเน้อ

23 Jul 07

bow_der_kleine

พี่แปงกำลังจะบอกว่า เราสามารถรู้ค่า p_x โดยไม่จำเป็นต้องรู้ pdf หรือเปล่าครับ

ส่วนสวนนั้น ผมไม่แน่ใจครับ ว่าเป็นที่เดิมหรือเปล่า เพราะก่อนหน้านี้ไม่เคยไป แต่ไปมาแล้วรู้สึกว่าเป็นอะไรที่มีสีสันมาก แม้ว่าจะออกเทา ๆ หน่อยก็ตาม :P

23 Jul 07

มุมมืดของสังคม

อุ้ย...

เข้าผิดที่ ฮ่าๆ ไม่รู้เรื่องครับเหอๆ

23 Jul 07

พี่แปง

ปัญหานี้มัน Discrete random variables ไม่ใช่เหรอครับ

23 Jul 07

bow_der_kleine

ผมกำลังงงความคิดเห็นของพี่แปงมากขึ้นเรื่อย ๆ ครับ กรุณาเขียนให้ชัดเจนด้วยครับ

23 Jul 07

พี่แปง

Discrete Random variables ไม่มี pdf ครับ แต่มี pmf การคำนวณค่า expectation ใช้สูตรข้างบน

การคำนวณหา pmf ก็ตามนิยาม pmf = the probability of the event {X=x}

ถึงได้ให้ความเห็นว่าการคำนวณหา Expectation ของปัญหาเรื่องหวยมันไม่น่าจะเกี่ยวกับ pdf ซึ่งนิยาม

กับ continuous random variables

23 Jul 07

โคตรสนองของโคตรเสนอ

ว่าจะโยงเรื่องนี้เอาไปเขียนบลอกตัวเองหากิน แต่ขี้เกียจอ้ะพี่ หนูชอบมากเรื่องเศรษฐศาสตร์การพนันเนี่ย แต่หนูตกเลขอ้ะ วิชาอื่นก็ไม่ได้เรื่อง เอาเป็นว่าหนูไม่เอาสมการตัวเลขมาเป็นตัวตั้งแล้วกัน แต่จะขอฟันธงว่าซื้อหวยยังไงก็รวยยาก

เหตุผลก็คือว่า การซื้อหวยนั้นคนส่วนมากจะคิดว่าซื้อๆไปเหอะ ถูกก็ถือเป็นบุญที่ได้เงินมาใช้ฟรีๆ มันจะฟรีได้ยังไงในเมื่อมันเหมือนกับเอาเงินตัวเองไปฝากไว้กับเจ้ามือหวย ได้คืนมั่งไม่ได้คืนมั่ง แถมต้องส่งดอกทุกสิบห้าวัน แถมเงินที่ได้มามันไม่ใช่ลาภลอยนะ มันมีที่มาที่ไป

คือได้เงินของตัวเองที่เสียๆไปมาใช้! ถ้าได้มากหน่อยก็คือเป็นเงินของคนอื่นที่ลงเรือลำเดียวกันที่ก็หวังว่าจะได้เงินของตัวเองคืนและได้เงินของคนอื่นไปใช้เหมือนกัน

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

แต่ปัญหาที่ต่อมาก็คือ เมื่อถูกหวยบ้างแล้วเราก็ได้เลื่อนตำแหน่งขึ้นไปเป็นมือวางบ้าง ทีนี้การฟาดฟันเพื่อรักษาแชมป์จึงย่อมเกิดขึ้น คนเคยถูกหวยก็ยังคงซื้อหวยต่อไปหวังจะได้ครองแชมป์หลายสมัย คนไม่เคยถูกก็ตั้งหน้าตั้งตาซื้อต่อไปหวังจะเป็นมือวางกับเขาบ้าง

การจะรวยด้วยหวยมันยากอยู่มาก เอาแค่เลขท้ายสองตัวนะ แค่ร้อยตัวเลขตั้งแต่ 00-99 มันจะออกมาให้ถูกอยู่เลขเดียวเท่านั้น ตัวเลขอื่นๆที่คนแทงอีกเก้าสิบเก้าตัวเลขล่ะ

คิดง่ายๆ สมมุติว่าการที่คนแทงเลขแต่ละตัวด้วยจำนวนเงินห้าบาทเท่ากัน ตัวเลขเก้าสิบเก้าตัวที่ไม่ออกรางวัลเป็นเงิน 99x5=4950 เลขตัวที่ออกคนแทงห้าบาท สมมุติว่าบาทละเจ็ดสิบ คนถูกก็ได้ไปแค่ 350 เจ้ามือก็ยังได้เงินมาปูเตียงนอน 4600

แล้วคิดจะโค่นแชมป็อย่างเจ้ามือมันจะไหวเร๊อะ?

25 Jul 07

โคตรสนองของโคตรเสนอ

อ้อ ลืมไป ที่เหลือเอาไปคิดเป็นการบ้านเอาเองนะจ๊ะระหว่างรางวัลเลขท้ายสามตัวหกรางวัล ที่มีความน่าจะเป็นอยู่ที่ 6:1,000 แต่เลขที่ออกแต่ละตัวมี่ค่าอยู่ที่ 1:1,000

รางวัลที่หนึ่งอยู่ที่ 1:100,000

ยังไม่นับความเสี่ยงของหวยไทยต่อการเจอเลขล็อค

คิดแล้วหนูก็โอ่ว ม๊ายก่อด!

25 Jul 07

pamkku

พึ่งจะเรียนจบเมื่อสัปดาห์ที่แล้ว เรื่อง Mathematical Expectation การยกตัวอย่างก็วนเวียนอยู่กับ ลูกเต๋า การถูกรางวัลลอตเตอรื และไพ่   the expected value random varible กรณีที่เป็น discrete คำนวณตามสูตรที่คุณแปงให้ไว้ กรณีที่เป็น continuous random variable คำนวณโดยการ intregration ตามสูตรที่คุณแปงให้ไว้เช่นกัน 

26 Jul 07

pamkku

ไม่แน่ใจว่าจะคุณ bow_der_kleine จะนำไปใช้ประโยชน์ได้รึเปล่า เนื่องจากเรียนทางด้าน biostatistic คณิตศาสตร์ที่เรียนคงจะไม่เข้มข้น ดุเดือด เหมือนกับทางฝั่งวิศวกรเรียนอยู่ก็เป็นได้ หากต้องการดูรายละเอียดอ้างอิงจากตำราของ John E.Freund Mathematical Statistic ,1992 Chapter 5  

26 Jul 07

ความคิดเห็น (click here to comment)

Search

Navigation

รวมลิงก์น่าสนใจ

ความเคลื่อนไหว

Login

name password

ลืมรหัสผ่าน