ดูหนึ่งข้อความ
  #14  
Old 06 กรกฎาคม 2001, 09:55
TOP's Avatar
TOP TOP ไม่อยู่ในระบบ
ผู้พิทักษ์กฎขั้นสูง
 
วันที่สมัครสมาชิก: 27 มีนาคม 2001
ข้อความ: 1,003
TOP is on a distinguished road
Icon19

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

เมื่อคืนลองกลับไปทำ simulation มาแล้ว จะขออธิบายรูปแบบที่ผมไปทำมานะครับ

จะสุ่มตัวเลขในช่วง [0,1] ออกมา 100 ค่า ดังนั้นสำหรับสี่เหลี่ยมจัตุรัสขนาด 1*1 ตารางหน่วย จะได้พิกัด (x,y) ที่เป็นไปได้ทั้งสิ้น = 100*100 = 10,000 ค่า
เราจะทำการสุ่มพิกัดเหล่านี้ออกมาเป็น (x1,y1) , (x2,y2) , (x3,y3) , (x4,y4) จากนั้นลากส่วนของเส้นตรงระหว่าง (x1,y1) ไปยัง (x2,y2) และระหว่าง (x3,y3) ไปยัง (x4,y4) ถ้าให้การสุ่มพิกัดทั้ง 4 ออกมานี้นับเป็น 1 รอบ จะได้ว่า มันควรจะครอบคลุมทุกรูปแบบที่เป็นไปได้เมื่อ ทำไปถึงรอบที่ 10,000 ^ 4 = 100,000,000 รอบ (ขอโทษด้วย ตอนคิดครั้งแรกมันเบลอๆ เลยได้คำตอบออกมาแบบนี้:P หากคิดให้ถูกจริงๆแล้วต้องทำการ simulation ไปเป็นจำนวนมากๆเลย 10^16 รอบ) แต่บางทีมันอาจยังไม่ครบทุกกรณีก็ได้ เพื่อเป็นการเผื่อเอาไว้ จึงทำไปที่ 2,147,000,000 รอบ (เผื่อไว้เต็มที่เลย )

1. หาจุดตัดของส่วนของเส้นตรงทั้งสอง (x,y) ตรวจสอบว่าส่วนของเส้นตรงทั้งสองขนานกันหรือไม่ (ดูจากจุดตัดว่าอยู่ที่ infinity หรือไม่)

1.1 หากพบว่าไม่ขนานกัน(แสดงว่ามันต้องไปตัดกันที่ไหนสักแห่ง) ก็ให้ตรวจสอบจากเงื่อนไขทั้ง 4 นี้
  • (x - x1)(x - x2) <= 0 (ตรวจสอบว่า x อยู่ระหว่าง x1 กับ x2)
  • (x - x3)(x - x4) <= 0 (ตรวจสอบว่า x อยู่ระหว่าง x3 กับ x4)
  • (y - x1)(y - x2) <= 0 (ตรวจสอบว่า y อยู่ระหว่าง y1 กับ y2)
  • (y - x3)(y - x4) <= 0 (ตรวจสอบว่า y อยู่ระหว่าง y3กับ y4)
หากพบว่า เป็นจริงทุกข้อ(จุดตัดจะต้องอยู่ระหว่าง (x1,y1) กับ (x2,y2) และ (x3,y3) กับ (x4,y4)) แสดงว่าส่วนของเส้นตรงทั้งสองตัดกันจริง แต่หากเป็นจริงเพียงบางข้อแสดงว่ามันไม่ตัดกัน (ต้องต่อความยาวของส่วนของเส้นตรงใดเส้นตรงหนึ่งออกไป จึงจะเจอจุดตัดนั้น)

1.2 หากพบว่าขนานกัน จะทำการตรวจสอบว่า ส่วนของเส้นตรงจาก (x2,y2) ไปยัง (x3,y3) ขนานกับ ส่วนของเส้นตรงจาก (x1,y1) ไปยัง (x2,y2) หรือไม่

1.2.1 หากพบว่าไม่ขนานกัน แสดงว่าส่วนของเส้นตรงทั้งสอง วิ่งขนานกันไป (ไม่ได้อยู่ในแนวเส้นตรงเดียวกัน) จึงไม่ตัดกัน

1.2.2 หากพบว่าขนานกัน ก็ให้ตรวจสอบจากเงื่อนไขทั้ง 2 ข้อนี้
  • (x1 - x3)(x1 - x4) <= 0 และ (y1 - y3)(y1 - y4) <= 0 (ตรวจสอบว่า (x1,y1) อยู่ระหว่าง (x3,y3) กับ (x4,y4))
  • (x2 - x3)(x2 - x4) <= 0 และ (y2 - y3)(y2 - y4) <= 0 (ตรวจสอบว่า (x2,y2) อยู่ระหว่าง (x3,y3) กับ (x4,y4))
หากพบว่าเป็นจริงข้อใดข้อหนึ่ง แสดงว่าส่วนของเส้นตรงทั้งสองตัดกันจริง(มันมีการทับซ้อนกัน) แต่หากไม่เป็นจริงเลย แสดงว่ามันไม่ตัดกัน (มันแค่อยู่ในแนวเส้นตรงเดียวกันเท่านั้น)

ผลจากการทดสอบไปได้ 2,147,000,000 รอบ พบว่า ความน่าจะเป็นที่เส้นตรงทั้ง 2 ตัดกันเป็น 23.117%
__________________
The difference between school and life?
In school, you're taught a lesson and then given a test.
In life, you're given a test that teaches you a lesson.

02 สิงหาคม 2001 11:21 : ข้อความนี้ถูกแก้ไขแล้ว 7 ครั้ง, ครั้งล่าสุดโดยคุณ TOP
ตอบพร้อมอ้างอิงข้อความนี้