“วิธีการเรียนรู้/การเริ่มต้นงาน”: Trick ง่ายๆ ที่หลายคนมองข้าม

“การเรียนรู้” มันเป็นเรื่องโลกแตกสำหรับใครต่อใครหลายๆ คน ที่มีปัญหามากมาย แล้วก็ไม่ว่าจะเรียนรู้อะไรเท่าไหร่ ก็เหมือนกับจะไม่รู้เรื่อง หรือทำไม่ได้สักที …. ไม่ว่าจะเป็นการเรียนรู้ภาษาโปรแกรมใหม่ๆ หรือการเขียนโปรแกรมบนอุปกรณ์ใหม่ๆ การเรียนภาษาอังกฤษ หรือการเรียนรู้เรื่องอื่นๆ อีกหลายๆ เรื่อง … แล้วในที่สุดก็ต้องพึ่งพาทางลัดทั้งหลายทั้งปวง เพื่อให้ได้ผลลัพธ์ที่ตัวเองต้องการอย่างเร่งด่วนฉาบฉวย

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

ลองพิจารณากันดูสักเล็กน้อยจะพบว่า … ในการอ่านหนังสือนั้น เรามีปัจจัยอย่างน้อยสองเรื่อง คือ “ภาษา” และ “เนื้อหา” ในขณะที่การเขียนโปรแกรมสักตัวนั้น เราก็มีปัจจัยพื้นฐานอย่างน้อย 2 เรื่อง คือ “ภาษา” และ “โครงสร้าง” ส่วนการพัฒนาโปรแกรมเพื่อตอบโจทย์ทางอะไรก็ตาม (เช่นโจทย์ทางธุรกิจ) จริงๆ นั้น ก็มีปัจจัยพื้นฐาน 2 เรื่องเช่นกัน คือ “ความสามารถในการพัฒนาโปรแกรม” และ “ความเข้าใจเรื่องราวนั้นๆ (เช่นความเข้าใจธุรกิจ)

Continue reading

Myth: Basic & Easy ..​เรื่องง่าย ที่มักเข้าใจผิด

เรื่องหนึ่งที่ผมพูดบ่อยมาก ก็คือ “พื้นฐาน (Basic) ไม่ง่าย” ซึ่งสวนกับความเข้าใจหรือความคิดโดยทั่วไปของคนส่วนมาก (เท่าที่รู้จัก) ว่า “Basic = ง่าย” และ “Advance = ยาก”

ทำไมเป็นงั้นล่ะ? พื้นฐานน่าจะเป็นเรื่องง่ายๆ ใครๆ ก็ต้องทำได้ ส่วนเรื่องระดับสูง น่าจะยากกว่า เพราะอย่างน้อยมันต้องต่อยอดจากพื้นฐานไม่ใช่เหรอ?

อันที่จริงแล้ว “พื้นฐาน” ที่ดี จะเป็น “การรู้” เกี่ยวกับ “อะไร ที่ไหน เมื่อไหร่ ทำไม” หรือ What, Where, When, Why มากกว่า “อย่างไร” หรือ How ซึ่ง “การรู้” นี้จะได้มาจาก “การลงมือทำ โดยรู้ว่าตัวเองทำอะไรอยู่” ไม่ใช่เพียงแค่ “ลงมือทำ เพื่อให้ได้ผลลัพธ์” นั่นคือ

“การลงมือทำ ในระดับพื้นฐานนั้น ผลลัพธ์ที่ได้และควรใส่ใจ คือ การรู้ว่าอะไร ที่ไหน เมื่อไหร่ และทำไม ไม่ต้องสนใจผลลัพธ์อย่างอื่นของมัน”

ยกตัวอย่างเช่น เรื่อง “Differential Calculus” ที่เป็นไม้เบื่อไม้เมากับนักเรียนนักศึกษาส่วนมาก หลายคนมองว่า d(x^2)/dx = 2x เป็นท่าพื้นฐานที่ใครๆ ก็ต้องทำได้ และแบบฝึกหัด d(2x^3)/dx จะสนใจว่าได้คำตอบเท่าไหร่ … ซึ่งเป็นการศึกษาพื้นฐานที่ผิดวิธีมากๆ

เพราะเรื่องพื้นฐานจริงๆ นั้น จะต้องสนใจ “นิยาม” ของ Differential Calculus ว่าเครื่องมือที่ใช้ในการมองอะไรอย่างไร เช่นเราจะมองผลของการเปลี่ยนแปลงของอะไรเมื่ออะไรเปลี่ยนแปลงไปบ้าง แม้ว่าการเปลี่ยนแปลงนั้นจะเล็กน้อยที่สุดเท่าที่เป็นไปได้ ก็จะมีผลอย่างไรบ้าง เป็นฟังก์ชั่นที่กระทำกับฟังก์ชั่นได้ผลลัพธ์เป็นฟังก์ชั่น ไม่ใช่กระทำกับค่า (Value) และอื่นๆ อีกมากมายไม่ใช่แค่นี้ และแบบฝึกหัด d(2x^3)/dx ก็ไม่ต้องสนใจว่ามันจะตอบว่า 6x^2 เท่ากับที่จะต้องสนใจว่า “เห็นหรือเปล่า ว่า 2x^3 เป็นฟังก์ชั่นของ x และ 6x^2 ก็เป็นฟังก์ชั่นของ x เมื่อดูการเปลี่ยนของฟังก์ชั่นของ x ตัวหนึ่ง (ฟังก์ชั่นเหตุ) ว่าเมื่อ x เปลี่ยนไปเล็กน้อยที่สุดเท่าที่มันเป็นไปได้ แล้วผลของมันจะเปลี่ยนแปลงไปยังไง (ฟังก์ชั่นผล)”

เห็นอะไรหรือเปล่าครับ นี่ผมยังพูดถึงพื้นฐานของ Differential Calculus ในเชิง What, Where, When, Why ไม่หมดเลยนะครับ ยังเหลืออีกเยอะ นี่คือ “เปลือก” ของพื้นฐานเท่านั้นเอง

ลองดูปริมาณบรรทัดที่ใช้ในคำอธิบาย ลองดูสิ่งที่อธิบายออกมาเป็นพื้นฐาน เทียบกับสิ่งที่หลายคนคิดว่าเป็นพื้นฐาน d(2x^3)/dx = 6x^2 ว่ามันต่างกันเยอะแค่ไหน

ประเด็นสำคัญก็คือ พื้นฐาน เป็นเรื่องของความเข้าใจ ที่จะต้องลึกขึ้นเรื่อยๆ ตามการกระทำจริง ที่ทำแล้วได้ความเข้าใจพื้นฐานเพิ่มเติม ซึ่งก็คือผลลัพธ์ในเชิงความเข้าใจ (อะไรคือ Calculus มันคือเครื่องมือที่ใช้อะไรเป็น Input และให้อะไรเป็น Output และเราจะใช้มันกับโลกรอบๆ ตัวได้ยังไง) ไม่ใช่ผลลัพธ์จากเทคนิค (6x^2)

ดังนั้น ในการศึกษาพื้นฐานหลายต่อหลายครั้ง จำเป็นที่จะต้องมี “ตัวอย่างเชิงเทคนิคที่ง่าย” หรือตัวอย่างที่ไม่เน้นการใช้ How เพราะตัวอย่างที่ง่ายและไม่ซับซ้อนนั้น จะทำให้เราชี้ถึงประเด็นของ What, Where, When, Why ได้ง่ายกว่าตัวอย่างที่ซับซ้อน ที่จะทำให้หลงไปในเทคนิคของวิธีการได้ง่าย

แต่อนิจจา …. สำหรับบ้านเรา ที่เน้นผลลัพธ์ที่จับต้องได้ (6x^2) มากยิ่งกว่าอะไรทั้งปวง รวมถึงผลลัพธ์เชิงความเข้าใจ (อะไรคือ Calculus ฯลฯ) นั้น การสนใจแต่ “ทำอย่างไร” กลายเป็นเพียงจุดเดียวที่สนใจ และหลายต่อหลายคนก็พยายามหาสูตรลัดหรือทางลัดไปยังคำตอบของวิธีการ สนใจแต่เรื่อง How และเทคนิคการได้มาซึ่งผลลัพธ์ที่จับต้องได้ … ดังนั้นจึงกลายเป็นว่า “พื้นฐานเป็นของง่าย” ไม่ใช่เพราะมันง่ายนะ แต่เป็นเพราะว่า “มันใช้ How ง่ายๆ”

คำพูดติดปากผมในช่วงหลังๆ ก็คือ

มันไม่มีอะไรยากหรอก ถ้าคุณคิดว่ามันยาก “ก็เพราะว่าคุณไม่มีพื้นฐานมากพอที่จะทำให้มันง่าย”

และ

สิ่งที่ยากที่สุด คือ “พื้นฐาน”

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

ที่สำคัญมาก …

พื้นฐานที่ดี จะต้องชัดเจน ไม่คลุมเครือ และมักจะเรียบง่ายกว่าความซับซ้อนเชิงเทคนิคต่างๆ ที่เรามองเห็น

ทั้งนี้ผมจะต้องขอสร้างความชัดเจน 1 จุดตรงนี้ คือ

“เรียบง่าย = Simple” นะ ไม่ใช่ “ง่าย = Easy”

คำว่า “เรียบง่าย” เป็นคำๆ เดียว แยกไม่ได้ ไม่ใช่ Easy นะ คนละเรื่อง คนละเรื่อง และคนละเรื่อง … การจะมองหาและทำความเข้าใจอะไรให้เรียบง่าย เป็นเรื่องที่ยากมาก และต้องมีพื้นฐานที่ดีมาก ถึงจะฉีกหน้ากากของความซับซ้อนเชิงเทคนิค มองทะลุฉากหน้าทั้งหลายทั้งแหล่ลงไปได้

ถึงผมจะยก Calculus มาเป็นตัวอย่าง แต่ทุกอย่างมันก็เข้าข่ายแบบนี้ทั้งนั้น ไม่ว่าจะเป็นการศึกษาดนตรี การเขียนโปรแกรม การเล่นกีฬา การศึกษาวิทยาศาสตร์หรือปรัชญา การศึกษาสังคม ฯลฯ

ป.ล. ฝากไว้ตรงนี้นิดหน่อย: “หนังสือ iOS Application Development ฉบับ Remake Edition สำหรับ iOS 6 SDK ที่ผมกำลังเขียนอยู่นั้น เป็นหนังสือ ‘พื้นฐาน’ มากๆ และแน่นอนว่า ‘มันไม่ใช่หนังสือที่ง่าย’ (Know-How อาจจะง่าย แต่ Know What, Where, When, Why หนักมากแน่นอน)”

สูตร

สิ่งที่พบบ่อยเวลาที่มีการนำเสนองานหรือว่าพูดถึงอะไรก็ตามที่มีแบบจำลองทางคณิตศาสตร์ (Mathematical Model) คนนำเสนอมักจะพูดกันว่า

“สูตร” (เช่น “เป็นไปดังสูตร” เป็นต้น)

ผมไม่ได้เรื่องมากหรือว่าจ้องจับผิดคนหรือว่า Picky มากกว่าไปกับเรื่องพวกนี้หรอกนะ แต่ว่าผมเชื่อว่ามันให้ความรู้สึกต่างกัน ระหว่าง

  • แบบจำลองทางคณิตศาสตร์
  • ความสัมพันธ์ระหว่างสิ่งต่างๆ ในเชิงคณิตศาสตร์
  • การมองคณิตศาสตร์เป็นภาษาๆ หนึ่ง

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

แต่ว่าจุดมุ่งหมายในการพูดถึงความสัมพันธ์นั้นๆ น่ะ มันไม่ใช่ความรู้สึกที่อยากได้ผลลัพธ์แต่ถ่ายเดียว แต่ว่าหมายถึงความต้องการที่จะบอกว่าอะไรสัมพันธ์กับอะไรอย่างไร อะไรส่งผลถึงอะไรอย่างไร มากกว่า

มันเป็นเรื่องของ ภาษาของเหตุและผล ซึ่งเป็นแบบจำลองในลักษณะ abstraction จากความเป็นจริง ซึ่งเป็นความรู้สึกที่ implied มาจาก “ความสัมพันธ์ทางคณิตศาสตร์” และ “แบบจำลองทางคณิตศาสตร์”

ไม่ใช่การมุ่งจะเอาผลโดยไม่คิดถึงเหตุ ซึ่งเป็นความรู้สึกที่ผมมีกับคำว่า “สูตร”

มีเรื่องขำๆ อีกเรื่อง เคยมีอยู่ครั้งที่ผมไปคอมเมนท์การใช้คำว่า “สูตร” ที่เป็นอสมการ (เป็น constraint ของปัจจัยบางปัจจัย) แล้วน้องคนที่นำเสนอ ก็เลยเลี่ยงไปใช้คำว่า “ดังสมการ” ทั้งๆ ที่เป็น “เครื่องหมายมากกว่า” อย่างชัดเจน เลยต้องคอมเมนท์ไปอีกที

ทำไม arithmetic ในคอมพ์จึงยาก?

วันก่อน peter (ซี้เก่าสมัยเรียนที่ Tsukuba) ส่งเรื่อง bug ใน Excel 2007 มาให้อ่าน (อันที่ peter ส่งมาไม่ใช่อันนี้นะ แต่ว่าก็เรื่องเดียวกัน)



ก็ตกใจเล็กน้อยนะ แต่ว่าก็ไม่ได้มากอะไร เพราะว่าจริงๆ ก็รู้อยู่ว่า computer arithmetic มันยาก …..

อ่าว มันจะยากได้ไงล่ะ ก็วิธีการก็รู้ๆ กันอยู่นี่นา จริงๆ แล้วไม่หรอก เพราะว่าการทำ computer arithmetic มันมีปัจจัยเยอะมาก .. อย่างที่ว่าน่ะแหละ devils are in details … แทบทุกเรื่องน่ะแหละ เราจะลง details แค่ไหนเท่านั้นเอง

พอดีไปเจอนี่มา

ที่มีคำอธิบายค่อนข้างจะละเอียด แต่ว่าอ่านตามได้ง่ายๆ และที่สำคัญ ถ้าใครคุ้นๆ ชื่อ ก็คงจะร้องอ๋อ ว่านี่มันพวกที่ทำ Mathematica ซึ่งเป็น Mathematical Package ที่ถือกันว่าดีที่สุดตัวหนึ่งนี่นา (มีชื่อมากเรื่องประสิทธิภาพ เรื่อง programmability .. ภาษา Mathematica นี่สุดยอดมากเหมือนกัน และเรื่องความแม่นยำ — แต่ว่าแพงมาก) ใน blog นั้นเขาเขียนขาย/เชียร์ Mathematica มากไปนิด (ก็แน่นอน) ผมก็เลยเอาใจความตรงที่เป็นสาระของเรื่องนี้มาเขียนให้อ่านกันใหม่เป็นภาษไทยก็แล้วกันนะ ตามนี้เลย

  • มันยากเพราะว่าวิธีการทำ arithmetic ที่อยู่ในตำราคณิตศาสตร์เบื้องต้น (วิธีที่เราชอบคิดกัน) มันไม่มีประสิทธิภาพเพียงพอ เช่นการคูณเลข ถ้าเราต้องการคูณเลขที่มีตัวเลขทั้งหมด n ตัว จะต้องใช้การคูณทั้งหมด n^2 ครั้ง แต่ว่าจริงๆ แล้วจาก algorithm ขั้นสูง เราก็รู้วิธีการที่จะทำได้ใน n^1.58, n log n หรือแม้แต่น้อยกว่านั้นสำหรับ n ที่มีค่ามากๆ ดังนั้นถ้า n มันใหญ่พอ มันจะเห็นความแตกต่างได้ชัดเจนมาก เรื่องเวลาที่ใช้ในการคำนวณ (เสี้ยววินาที เทียบกับเป็นนาที อะไรทำนองนั้น) ตัวอย่างของ algorithm ดังกล่าวก็เช่น Karatsuba algorithm
  • Algorithm เหล่านี้ แม้ว่าจะมีประสิทธิภาพสูงกว่า (และมีความแม่นยำสูงกว่า) วิธีการแบบ school-book มาก .. แต่ว่าเนื่องจากความซับซ้อนของมัน ก็ทำให้พวกมันมี bug ง่ายกว่าเช่นกัน
  • นอกจากนั้นยังมีเรื่องของการเก็บค่าตัวเลขทศนิยมไว้ในหน่วยความจำ ซึ่งปกติจะเก็บเป็นฐาน 2 เพื่อคำนวณ แต่ว่าเมื่อจะนำมาแสดงผล จะต้องเปลี่ยนฐานเลขให้เป็นฐาน 10 ซึ่งโดยปกติจะต้องทำการ round ตัวเลขฐาน 2 พวกนั้นให้เป็นเลขฐาน 10 ที่มีความใกล้เคียงที่สุด จากรูปข้างล่างนี่จะเห็นว่ามีความคลาดเคลื่อนในการแสดงผล


  • ปัญหาหลักๆ จริงๆ มาจากการทำ base conversion ซึ่งจาก binary เป็น decimal จะใช้การคูณเป็นหลัก และจาก decimal เป็น binary จะกลับกันคือใช้การหารเป็นหลัก ประเด็นมันอยู่ที่ว่า บางที (สำหรับตัวเลขบางตัว) การคูณหรือหารนั้นจะต้องทำที่ precision ที่มากกว่าตัวเลขนั้นๆ เพื่อให้ได้ค่าที่ถูกต้อง
  • แต่ว่าระบบคำนวณหลายระบบดันผูกติดกับ fixed precision ของ hardware ที่ใช้งาน ดังนั้นในหลายๆ งานจึงไม่สามารถที่จะได้การแปลงเลขฐานที่ถูกต้องสำหรับตัวเลขหลายๆ ตัว
  • ความผิดพลาดยังเกิดได้จาก “เลขทด” (carries) หรือตัวเลขที่เกิดจากกระบวนการทดเลขน่ะแหละครับ ซึ่งระบบซอฟต์แวร์หลายตัวก็จะทำงานพลาดถ้ามีการทดมากๆ ไป ซึ่ง bug แบบนี้มีมาตั้งแต่สมัยไหนสมัยไรแล้ว โปรแกรมหลายตัวในปัจจุบันก็ยังมีปัญหาเรื่องนี้อยู่นะ
  • ปัญหาหนักอีกที่หนึ่งสำหรับ computer arithmetic ก็คือ ในกรณีทั่วๆ ไป มันค่อนข้างจะ “ง่าย” ที่จะทำให้มัน “เกือบถูกต้อง” (คือ ถูกกับ input case ทั่วๆ ไป แต่ว่ากับ input บางตัวจริงๆ จะทำให้เกิดปัญหาขึ้นมา)
  • และปัญหาที่หนักที่สุดก็คือพวก bug กับตัวเลขบางตัวที่มี bit pattern บางประเภทจริงๆ พวกนี้จะหาเจอยากมากในระหว่าง testing หรือว่าเรียกได้ว่า rare bug เลยก็ว่าได้ มันหายากขนาดที่ว่าเราอาจจะทดสอบกับตัวเลขเป็นพันๆ ล้านตัว แต่ว่าไม่เจอพวกมันเลยก็ได้

ยังเชื่อใจโปรแกรมหลายตัวของท่านอยู่อีกหรือเปล่าเนี่ย?

อ้างอิง: Wolfram Blog: Arithmetic is Hard — To Get Right

ปล. หลังจากคุยกันเสร็จ ผมกับ peter ก็ joke เล่นกันต่อว่า เฮ้ย นี่แหละ เห็นมั้ย OpenOffice.org ไม่ compatible กับ MS-Office อีกอย่างแล้วนะ (ค่าที่คำนวณมันได้ไม่เท่ากัน ใส่ตัวเลขข้างบนเข้าไปแล้ว OO.o มันคำนวณถูก…) แถม peter เล่าให้ฟังว่า บางคนตลกร้ายกว่านั้น บอกให้เพิ่ม tag MultiplyLikeExcel2007 ลงไปใน spec ของ OOXML ด้วยนะ ขำกลิ้งเลย

ปล.2 จริงๆ Slashdot ก็มีลง แต่ว่าพักหลังๆ ผมอ่าน /. น้อยลงมั้ง ก็เลยไม่ค่อยได้สังเกตหรือว่าใส่ใจ อันนี้ link:

Coincidence คำพูดปลอบใจ และทฤษฎีความน่าจะเป็น

เคยอ่านเจอ หรือว่าเคยได้ยิน เรื่องความคล้ายกันของ John F. Kennedy กับ Abraham Lincoln มั้ย? สองคนนี้มีอะไรที่คล้ายกันอย่างไม่น่าเชื่อเชียวล่ะ

มันบังเอิญขนาดนั้นเลยเหรอ?

ไม่มีอะไรหรอกครับ พอดีช่วงนี้เปิดฤดูกาลบอลน่ะ แล้วทีมโปรดของผม Manchester United ก็เปิดได้อย่างน่าดูสุดๆ คือ เสมอมันรวดสองนัด แพ้ใน derby match อีกตะหาก แต่ว่าช่วงก่อนจะแพ้ Man City ก็มีแฟนบอลที่แม่นสถิติของทีม มาบอกว่าคร้ังสุดท้ายที่เราเปิดฤดูกาลมาเสมอสองนัดเนี่ย ปีนั้นเราได้ 3 แชมป์

ปีก่อน ผมจำได้ว่าก่อนที่ Man United จะแพ้ Milan ใน ECL น่ะครับ มีหลายคนที่เอาสถิติปีที่แล้วกับปีที่ได้ 3 แชมป์นั้นมาเทียบกัน ว่ามันเหมือนกันสุดๆ ในหลายๆ อย่าง ….​

แต่แล้ว ปีที่แล้วก็ไม่ได้ 3 แชมป์ จริงๆ แล้วได้แค่แชมป์เดียว

ผมอยากจะเขียนเรื่องนี้มานานแล้วครับ เรื่องความเข้าใจความน่าจะเป็น ความเข้าใจปรากฏการณ์ของ coincidence และ common sense ที่บางทีอาจจะกลายเป็น common nonsense ไปเสียได้กับเรื่องแบบนี้

มันเป็นธรรมดาครับ ที่ถ้าเรามีข้อมูลอะไรบางอย่าง และเลือกพิจารณาข้อมูลบางอย่าง อย่าง “หลวม”ๆ แล้ว มันจะมีข้อมูลที่สามารถตรงกันได้อย่างน่าอัศจรรย์เลย ลองเล่นเกมง่ายๆ ดูครับ

  1. เอาไพ่มา 2 สำรับ ให้คน 2 คนช่วยกันสับไพ่คนละสำรับ สับให้เละจนกว่าจะพอใจนะ
  2. จากนั้นให้ทั้ง 2 คนหยิบไพ่ใบไหนก็ได้ (หรือว่าจะเอาใบบนสุดของสำรับก็ได้นะ) มาเปิดพร้อมกันทีละคู่
  3. ดูซิว่าจะมี “ตรง” กันบ้างมั้ย

สนุกนะครับ ที่ผม “” คำว่า “ตรง” เนี่ยแหละ เพราะว่าถ้าเรายิ่งระบุ condition ในการ “ตรง” ให้ “หลวม” เท่าไหร่ มันก็ยิ่งตรงกันมากขึ้นเท่านั้น (อันนี้ common sense ใช่มั้ย) เช่น condition ด้านล่างนี้ เรียงจาก strict มากที่สุด ถึงหลวมมากที่สุดนะ

  1. ไพ่จะตรงกันเมื่อทั้งสํญลักษณ์และหมายเลขตรงกัน (1 ใน 52 ใบ)
  2. ไพ่จะตรงกันเมื่อมีสีเหมือนกันและหมายเลขตรงกัน (2 ใน 52 ใบ)
  3. ไพ่จะตรงกันเมื่อหมายเลขตรงกัน (4 ใน 52 ใบ)
  4. ไพ่จะตรงกันเมื่อมีสัญลักษณ์เดียวกัน (13 ใน 52 ใบ)
  5. ไพ่จะตรงกันเมื่อมีสีเดียวกัน (26 ใน 52 ใบ)

เป็นต้น

ผมลองทำ simulation ง่ายๆ นะครับ โดยนับสถิติจากการเล่นเกมทั้งหมด 100 ครั้ง ได้ผลดังนี้ครับ

  1. สัญลักษณ์และหมายเลขตรงกัน มากที่สุด 4 ครั้ง น้อยที่สุด 0 ครั้ง เฉลี่ย 1.05 ครั้ง ตัวเลขที่ออกมากที่สุดคือ 1 (38 ครั้ง)
  2. หมายเลขตรงกัน มากที่สุด 9 ครั้ง น้อยที่สุด 0 ครั้ง เฉลี่ย 4.24 ครั้ง ตัวเลขที่ออกมากที่สุดคือ 3 (23 ครั้ง)
  3. สัญลักษณ์ตรงกัน มากที่สุด 21 ครั้ง น้อยที่สุด 6 ครั้ง เฉลี่ย 12.85 ครั้ง ตัวเลขที่ออกมากที่สุดคือ 10 (14 ครั้ง)
  4. สีตรงกัน มากที่สุด 34 ครั้ง น้อยที่สุด 16 ครั้ง เฉลี่ย 25.6 ครั้ง ตัวเลขที่ออกมากที่สุดคือ 26 (24 ครั้ง)

เห็นได้ชัดเจน ว่ามันจะมีสิ่งที่ บังเอิญ ตรงกันบ้าง ยิ่งเราให้ condition มันหลวมเท่าไหร่ มันยิ่งตรงกันมากขึ้น ง่ายขึ้น เท่านั้น ซึ่งก็พอๆ กับเรื่อง Lincoln กับ Kennedy หรือว่าเรื่องความบังเอิญทั้งหลายแหล่ในฟุตบอล เหตุการณ์ต่างๆ กีฬาต่างๆ สถานการณ์โลกต่างๆ ด้วย

บางทีถ้าเราคิดว่าอะไรมันสำคัญล่ะก็ เราจะ focus และมองเห็นแต่สิ่งนั้นอย่างเดียว เช่นเราลองคิดว่าตัวเลขบางตัวมันสำคัญสิ (เช่น 23 หรือว่า 3.14) เราอาจจะเห็นมันอยู่รอบๆ ตัวมากมายกว่าตัวเลขอื่นๆ .. เพราะว่าเราเลือกมองไพ่ที่สิ่งรอบตัวหงายขึ้นมา เฉพาะใบที่มันบังเอิญตรงกับไพ่ที่ใจเราหงายขึ้นมาเอง

เหตุการณ์ต่างๆ มากมายที่เกิดขึ้นตลอดเวลาบนโลกนี้ มันก็จะมีอะไรที่คล้ายกันบ้าง มากหรือน้อยก็แล้วแต่เหตุการณ์นั้นๆ บางทีถ้าเหตุการณ์มันคล้ายกับอะไรที่เคยเกิดขึ้นแล้วมันไม่ค่อยดี บางทีเราก็ระลึกไว้บ้างละกันว่า มันเป็นแค่ความบังเอิญเท่านั้น หรือว่าบางทีที่มันไปเกิดคล้ายกับเหตุการณ์ดีๆ มันก็แค่ความบังเอิญเช่นกัน

ระลึกไว้: เพราะว่าเราเลือก มอง ไพ่ที่สิ่งรอบตัวหงายขึ้นมา เฉพาะใบที่มัน บังเอิญตรง กับไพ่ที่ใจเราหงายขึ้นมาเอง