วันศุกร์ที่ 11 ตุลาคม พ.ศ. 2567

ความน่าจะเป็นของผลรวมของเลขที่ออกของการโยนลูกเต๋า 3 ลูก ด้วยการจำลองมอนติคาโล(The probability of the sum of three dice rolls by Monte carlo simulation )

ในบทความนี้จะนำเสนอความน่าจะเป็นของผลรวมเลขที่ออกของการโยนลูกเต๋าพร้อมกัน 3 ลูก ด้วยการจำลองมอนติคาโล เรามาดูว่า ความน่าจะเป็นจะเป็นอย่างไร จากบทความที่แล้ว เราทราบว่า ความน่าจะเป็นของการออกเลขต่างๆของลูกเต๋า ทั้ง 6 หน้า มีโอกาสเกิดขึ้นเท่าๆกัน (Uniform Distribution) แบบจำลองของการหาผลรวมของเลขที่ออกในการโยนลูกเต๋า 3 ลูก เราจะเขียนในสูตร Excel ได้ดังนี้

= RANDBETWEEN(1,6) + RANDBETWEEN(1,6) + RANDBETWEEN(1,6)

ใช้ Data Table จำลองการโยนลูกเต๋า 3 ลูก โดยจะขอจำลองการโยนลูกเต๋า 2,000 ครั้ง  กำหนดให้ ผลรวมที่เกิดจากการสุ่ม ใน Cell E6 = C3
เลือก Cell D7:E2006 สำหรับ ใช้ใน Data Table ดังรูป 


จะปรากฎหน้าต่าง Data Table เลือก Cell ที่ไม่เกี่ยวข้องกับการการคำนวณและการแสดงผลลัพธ์ ดังรูป


กดปุ่ม ตกลง จะได้ผลลัพธ์การจำลองโยนลูกเต๋า  3 ลูก พร้อมๆกัน 
โอกาสของผลรวมของเลขที่ออกในการโยนลูกเต๋า 3 ลูก ที่เป็นไปได้ คือ 3 - 18
เราจะใช้สูตร Excel : Frequency ในการนับจำนวนครั้งของผลรวมของเลขที่ออกในการโยนลูกเต๋า 3 ลูก จำนวน 2,000 ครั้ง และสามารถแสดงการกรจายจำนวนครั้งของผลรวมของเลขที่ออกในการโยนลูกเต๋า 3 ลูก จำนวน 2,000 ครั้ง ด้วยการพล็อต ฮิสโตแกรม ดังภาพ


จากฮีสโตแกรม เราจะพบว่า เป็นการกระจายตัวใกล้เคียง กับการกระจายแบบปกติ โดยโอกาสการเกิดผลรวมของเลขที่ออกการโยนลูกเต๋า 3 ลูก ต่ำกว่า 11 มีมากกว่า โอกาสการเกิด ผลรวม มากกว่า 11 เล็กน้อย ซึ่งแน่นอนว่า โอกาสที่เราจะเดาถูกและเดาผิดไม่ต่างกันมากนัก

จากตัวอย่างนี้เป็นการนำเสนอเทคนิดการจำลองด้วยมอนติคาโล อีกตัวอย่างหนึ่งเพื่อให้ท่านผู้อ่านเข้าใจเทคนิคการจำลองด้วยมอนติคาโลยิ่งขึ้น









วันเสาร์ที่ 5 ตุลาคม พ.ศ. 2567

ประมาณค่า PI โดยการจำลองมอนติคาโล (Monte carlo Simulation By Excel)

บทความนี้ยังอยู่ใน ปฐมบท การสร้างแบบจำลอง และการจำลองโดยใช้ฟังก์ชั่น ใน Excel อยุ่นะครับ โดยในการจำลองต่างๆจะอาศัยเทคนิคหรือแนวคิดของการจำลองมอนติคาโล เป็นพื้นฐานครับ กล่าวคือการจำลองมอนติคาโล เป็นเทคนิคทางคณิตศาสตร์ที่ใช้คาดการณ์ผลลัพธ์ที่เป็นไปได้ของเหตุการณ์ต่างๆที่ไม่แน่นอน ซึ่งปัจจุบันเรามีคอมพิวเตอร์ที่ความเร็วสูงมาช่วยในการคำนวณ โดยอาจจะอาศัยข้อมูลในอดีต มาทำนายอนาคต ตามความน่าจะเป็นที่จะเกิดขึ้นได้ ดังนั้นใน Content นี้ จึงจะยกตัวอย่างการใช้เทคนิคการจำลองมอนติคาโล มาให้ท่านผู้อ่านได้ทำความเข้าใจเพื่อนำไปประยุกต์ใช้การจำลองสำหรับแก้ปัญหาในด้านต่างๆในชีวิตจริง เช่น Business Finance เกมส์ออนไลน์ Engineering เป็นต้น

เรามาศึกษา Classic Problem สำหรับการจำลองมอนติคาโล กันครับ นั่นคือ การประมาณค่า PI ซึ่งเรารู้กันแล้วว่า ค่า PI ที่ใช้ เป็นจำนวน อตรรกยะ นั่นคือ เป็นจำนวนที่ไม่สามารถเขียนเป็นเศษส่วนของจำนวนเต็มได้ หรือค่าเป็นทศนิยมไม่รู้จบ นั่นเอง โดยหากจะใช้กันในทางวิศวกรรม ก็อาจจะใช้ PI = 3.14159...... เป็นต้น เรามาดูแนวคิดการประมาณค่า PI กันวิธีหนึ่งครับ พิจารณารูป สี่เหลี่ยมจัตุรัส กว้าง 2R หน่วย ภายในบรรจุวงกลม รัศมี  R หน่วย 




เราจะสร้างแบบจำลอง สัดส่วนของ พื้นที่วงกลมต่อ พื้นที่สี่เหลี่ยม (RA) โดย
RA = PI*R^2/(2R)^2 = PI/4
RA = PI/4
ดังนั้น 
PI = RA*4

เราจะจำลองเหตุการณ์ โดยสุ่มจุดในพิกัด x, y ในขอบเขต สี่เหลี่ยมจัตตุรัสขึ้นมา และจะพิจารณาว่าจุดที่สุ่มขึ้นมาอยู่ในวงกลมหรือไม่ และเมื่อสร้างเหตุการณ์สุ่มจุดต่างๆขึ้นมาเป็นจำนวนมาก เราจะพบว่า 
สัดส่วนของจุดที่อยู่ในวงกลม (พื้นที่) ต่อ จุดทั้งหมดที่อยู่ในสี่เหลี่ยม คูณด้วย 4 จะมีค่าเข้าใกล้ค่า PI มากขึ้น  มาดูการใช้ Excel ช่วยการจำลองมอนติคาโลกันเลยครับ

สมมุติ เรากำหนด R = 0.5 หน่วย จุดศูนย์กลางอยู่ในพิกัด 0,0 

เราจะสุ่มจุดพิกัด x ,y ขึ้นมาโดยใช้ฟังก์ชั่น RAND ตามที่เคยได้อธิบายในLink นี้นะครับ
โดยเราจะสุ่มให้พิกัด x , y อยู่รหว่าง -0.5 ถึง 0.5 เขียนเป็นสูตร Excel ได้ดังนี้ครับ

พิกัด x = (0.5+0.5)*RAND()-0.5
พิกัด y = (0.5+0.5)*RAND()-0.5

การตรวจสอบพิกัด x,y ว่าอยู่ในวงกลมหรือไม จะเขียนสูตร Excel ได้ดังนี้

IF(SQRT(x^2+y^2)<= 0.5 , true,false)

ผลการจำลองแสดงดังภาพ




ขั้นตอนต่อไปเราจะเริ่มจำลองเหตุการณ์ การสุ่มพิกัด x ,y โดยในตัวอย่างขอ จำลองการสุ่มทั้งหมด 10,000 ครั้ง สร้างตัวเลข Trial ในหลัก G ตั้งแต่ G7:G10006 และกำหนดให้
ผลการตรวจสอบพิกัด x,y ว่าอยู่ในวงกลมหรือไม่ ใน  H6 = F4
กำหนดพิกัด x ใน  I6 = C4
กำหนดพิกัด y  ใน J6 = D4


ใช้คำสั่ง Data table ในการช่วยสุ่มพิกัด x , y จำนวน 10,000 เหตุการณ์ โดยเลือก G6:J10006
ในหน้าต่าง Data table ให้คลิกเลือก Cell ช่องว่าง นอกพื้นที่ที่เราเลือก เนื่องจาก ไม่ได้มีการเปลี่ยนแปลงค่าในสูตรคำนวณอื่นๆ ผลการคำนวณด้วย Data Table แสดงได้ดังภาพ


เราจะเขียนสูตร Excel เพื่อช่วยแยกจุดที่อยู่ในวงกลม โดยเขียนสูตรไว้ดังนี้

K7 = IF(H7=TRUE , I7 , 0) 
L7 = IF(H7=TRUE . L7,0)

นับจำนวนจุดที่อยู่ในวงกลมได้โดยเขียนสูตร Excel ได้ดังนี้

N5 = COUNTIF($H$7:$H$10006,TRUE)

เราสามารถประมาณค่า PI ได้ ตามสูตรดังนี้

PI = N6 = 4*N5/10000

ผลการจำลองแสดงได้ดังภาพ
และเราสามารถนำพิกัด x,y ที่จำลองได้ไปพล๊อตกราฟ เพื่อตรวจสอบความถูกต้องได้ดังภาพครับ



ถ้าเราสุ่มพิกัด x,y มากขึ้น ค่า PI ที่ประมาณก็จะมีความถูกต้องมากขึ้นครับ

ในบทความต่อๆไป เราจะนำเสนอการนำ การจำลองมอนติคาโล มาช่วยแก้ปัญหาต่างๆในชีวิตประจำวันของเรากันต่อครับ














วันเสาร์ที่ 28 กันยายน พ.ศ. 2567

การสร้างเลขสุ่มแบบ Uniform distribution ด้วยสูตร Excel : RAND

สวัสดีครับ วันนี้จะเสนอความหมายกายภาพของ การสุ่มตัวเลขด้วยฟังก์ชั่น Excel : RAND() ฟังก์ชั่น RAND() เป็นฟังก์ชั่น ที่สร้างตัวเลขสุ่ม ระหว่าง 0 - 1 ซึ่งตัวเลขทุกค่ามีโอกาสสุ่มขึ้นมาได้ด้วยความน่าจะเป็นเท่าๆกัน โดยในทางสถิติ จะเรียกการแจกแจงแบบนี้ว่า Uniform distribution นอกจากฟังก์ชั่น RAND() แล้ว หากต้องการสุ่มจำนวนเต็ม Excel ได้เตรียมฟังก์ชั่น RANDBETWEEN(bottom,top) ไว้ให้เรียบร้อยแล้ว เรามาดูตัวอย่างลักษณะการแจกแจงของเลขสุ่มดูครับ

เราทราบกันดีว่าในการทอยลูกเต๋า ความน่าจะเป็นที่ลูกเต๋าจะออกหน้า 1 , 2 , 3 ,4 ,5,6 มีเท่าๆกัน ดังนั้น เรามาจำลองการทอยลูกเต๋า ซัก 10,000 ครั้งกันดูครับ โดยใช้ คำสั่ง Data Table ช่วยในการจำลองการทอยลูกเต๋าทั้ง 10,000 ครั้งกัน มาเริ่มกันเลยครับ

ป้อนสูตร Excel ที่ 
C5 = RANDBETWEEN(C2,C3)   เป็นการสุ่มหน้าลูกเต๋า 1 - 6  
สร้างลำดับการทอยลูกเต๋า 10,000 ครั้ง ตั้งแต่ C9:C10008
กำหนดผลการทอยลูกเต๋า C8 = C5
ดังรูป



เราจะเริ่มจำลองการทอยลูกเต๋าทั้ง 10,000 ครั้ง โดยใช้คำสั่ง Data Table โดยให้ คลิก เลือกช่วง B8:C10008
ไปที่เมนู ข้อมูล เลือก การวิเคราะห์ข้อมูลแบบ What -if เลือก ตารางข้อมูล จะปรากฎหน้าต่าง ตารางข้อมูล ขึ้นมา ให้เลือก C6 หรือ เซลล์ ที่ไม่มีข้อมูลใดๆก็ได้ ดังแสดงในภาพ


กดปุ่ม ตกลง
จะได้ผลลัพธ์การทอยลูกเต๋าจำนวน 10,000 ครั้ง ดังภาพ



มาถึงขั้นตอนการวิเคราะห์ลักษณะการกระจายตัวของผลการทอยลูกเต๋าเพื่อยืนยันว่า การทอยลูกเต๋าเป็นการกระจายแบบ Unifom Distribution ซึงมีโอกาสเกิดขึ้นเท่าๆกัน เราจะใช้ฟังก์ EXCEL : FREQUENCY เพื่อนับจำนวนครั้งของการออกหน้าต่างๆของลูกเต๋า โดยมีขั้นตอนดังนี้

เรียงหน้าลูกเต๋า ตั้งแต่ 1 - 6 ใน หลัก E9 - E14 
คลิกเลือก D9:D14
พิมพ์สูตร Excel = FREQUENCY(C9:C10008,E9:E14) ดังภาพ




กดปุ่ม Shift+Ctrl +Enter และนำผลลัพธ์ไปพล็อตด้วยกราฟแท่งแสดงได้ดังภาพ


เราจะเห็นว่าการกระจายตัวของผลการทอยลูกเต๋า มีโอกาสเกิดขึ้นในแต่ละหน้าเท่าๆกัน ถ้าเราเพิ่มการทอยลูกเต๋าขึ้นไปเป็น 100,000 ครั้ง การกระจายของการทอยลูกเต๋าก็จะ Uniform มากขึ้น

มาถึงตรงนี้ เราสรุปได้ว่า ฟังก์ชั่น RAND() , RANDBETWEEN(bottom,top) ให้เลขสุ่มที่มีการกระจายแบบ Uniform มีความน่าจะเป็นที่จะได้เลขสุ่มเท่าๆกัน 

ในกรณีที่ต้องการเลขสุ่ม ระหว่างจำนวน a - b เราสามารถใช้ใช้สูตร EXCEL :  RAND() ได้ดังนี้

= (b-a๗*RAND() + a

การกระจายแบบ Uniform ในชีวิตประจำวันมีมากมาย ในการจำลองความน่าจะเป็นที่จะเกิดเหตุการณ์ต่างๆ ก็จะใช้ฟังก์ชั่น RAND หรือ RANDBETWEEN ได้ครับ เช่น

มีรายได้พิเศษประจำเดือน 1,500 - 3,500 บาท (ขึ้นอยู่กับเวลา)  สามารถจำลองรายได้พิเศษประจำเดือนได้โดยใช้สูตร
(3500-1500)* RAND() + 1500
ค่าซักผ้า ค่าผงซักฟอก ค่า น้ำยาปรับผ้านุ่ม ประจำเดือน  1,500 - 2,500 บาท (ขึ้นอยู่กับ เครื่อง ปริมาณผ้าที่ซัก เป็นต้น) สามารถจำลองค่าใช้จ่ายโดยใช้สูตร 
(2500-1500)*RAND() + 1500

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

NORM.INV(RAND(),mean,std) เป็นต้น

ในตอนต่อๆไปจะนำเสนอการจำลองในปัญหาต่างๆ ในชีวิตประจำวัน

หัวข้อที่เกี่ยวข้อง


















วันเสาร์ที่ 18 พฤษภาคม พ.ศ. 2567

Simulation with Excel

บทความนี้ต้องการนำเสนอ การทำ Simulation ด้วยโปรแกรม Excel นะครับ ก่อนอื่น มารู้จักการ Simulation ก่อน Simulation คือ แบบจำลองทางคณิตศาสตร์ ที่ใช้อธิบายเหตุการณ์หรือพฤติกรรมต่างๆที่เรากำลังสนใจ และต้องมีการเปรียบเทียบผลจากการ Simulation กับ ผลที่เกิดขึ้นจริง หากผลการ Simulation อธิบายได้ไม่ใกล้เคียงกับความจริง เราต้องกลับไปปรับแบบจำลองคณิตศาสตร์ และ ทดสอบ Simulation อีกครั้ง ทีนี้มาดู ฟังก์ชัน Excel ที่เกี่ยวข้องกับการทำ Simulation กันก่อน โดยปกติ ในการ Simulation มักจะเริ่มสุ่มตัวแปรอิสระและนำเข้าแบบจำลองคณิตศาสตร์ ดังนั้นในบทความนี้จะแนะนำ ฟังก์ชัน Excel  2 ฟังก์ชั่น ที่เกี่ยวข้องกับการสุ่มตัวแปรอิสระ ดังนี้ครับ

1. ฟังก์ชั่น RAND() ฟังก์ชันนี้จะส่งกลับตัวเลขในระหว่าง 0 - 1 กลับมา เราสามารถเขียนสูตร Excel ได้ง่ายๆ ดังนี้ =RAND()

2. ฟังก์ชั่น RANDBETWEEN(bottom,top) ฟังก์ชั่นนี้จะส่งกลับเลขจำนวนเต็ม ตั้งแต่ bottom ถึง top  เราสามารถเขียนสูตร Excel ได้ง่ายๆ ดังนี้ =RANDBETWEEN(2,10) Excel จะคืนค่าเลขสุ่มจำนวนเต็มตั้งแต่ 2 ถึง 10

มาดูตัวอย่างการใช้ฟังก์ชั่น RAND()

การใช้ สถิติช่วยในการหาความน่าจะเป็น สมมุติเราทราบว่าข้อมูลประชากรมีการกระจายตัวแบบ Normal Distribution  และมีค่าเฉลี่ย  100 และส่วนเบี่ยงเบนมาตรฐาน 15

หากเราต้องการทราบค่าของข้อมูลที่สนใจใดๆ ซึ่งความน่าจะเป็นถูกสุ่มขึ้นมาจากฟังก์ชั่น RAND เราสามารถเขียนแบบจำลองคณิตศาสตร์ได้ภาพ



จากภาพ หากกด F9 อีกครั้ง ค่าความน่าจะเป็นจะถูกสุ่มระห่าง 0 - 1 ข้อมูลที่คำนวณได้ในช่อง B5 ก็จะเปลี่ยนไป ตามค่า ในช่อง B4 ครับ

ตัวอย่างนี้ก็จะเป็นตัวอย่างง่ายๆในการ Simulation หาตัวแปรสุ่มในข้อมูลที่กระจายตัวแบบ Normal Distribution ในบทความต่อๆไป ผมจะนำเสนอแนวคิดในการ Simulation ด้วย Excel ในปัญหาต่างๆครับ

หัวข้อที่เกี่ยวข้อง

Yahoo bot last visit powered by  Ybotvisit.com