ใช่ครับ ความน่าจะเป็นที่เส้นตรงทั้ง 2 แตะกันคือ 0 และความน่าจะเป็นที่สุ่มแล้วได้จุดเดียวกัน ก็เป็น 0 อีกนั่นแหละ แต่คิดทีไรก็รู้สึกว่ามันแปลกๆชอบกล เพราะสิ่งใดก็ตามที่มีความน่าจะเป็น เป็น 0 นี่แสดงว่า ไม่มีโอกาสเกิดขึ้นได้เลย
เมื่อคืนลองกลับไปทำ simulation มาแล้ว
จะขออธิบายรูปแบบที่ผมไปทำมานะครับ
จะสุ่มตัวเลขในช่วง [0,1] ออกมา 100 ค่า ดังนั้นสำหรับสี่เหลี่ยมจัตุรัสขนาด 1*1 ตารางหน่วย จะได้พิกัด (x,y) ที่เป็นไปได้ทั้งสิ้น = 100*100 = 10,000 ค่า
เราจะทำการสุ่มพิกัดเหล่านี้ออกมาเป็น (x
1,y
1) , (x
2,y
2) , (x
3,y
3) , (x
4,y
4) จากนั้นลากส่วนของเส้นตรงระหว่าง (x
1,y
1) ไปยัง (x
2,y
2) และระหว่าง (x
3,y
3) ไปยัง (x
4,y
4) ถ้าให้การสุ่มพิกัดทั้ง 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)
หากพบว่า เป็นจริงทุกข้อ(จุดตัดจะต้องอยู่ระหว่าง (x
1,y
1) กับ (x
2,y
2) และ (x
3,y
3) กับ (x
4,y
4)) แสดงว่าส่วนของเส้นตรงทั้งสองตัดกันจริง แต่หากเป็นจริงเพียงบางข้อแสดงว่ามันไม่ตัดกัน (ต้องต่อความยาวของส่วนของเส้นตรงใดเส้นตรงหนึ่งออกไป จึงจะเจอจุดตัดนั้น)
1.2 หากพบว่าขนานกัน จะทำการตรวจสอบว่า ส่วนของเส้นตรงจาก (x
2,y
2) ไปยัง (x
3,y
3) ขนานกับ ส่วนของเส้นตรงจาก (x
1,y
1) ไปยัง (x
2,y
2) หรือไม่
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%