จำนวนความเป็นไปได้ทั้งหมด
1) ปิด! คุณมีตัวเลือกทั้งหมด 62 ตัวเลือกสำหรับตัวละครตัวแรก 62 ตัวที่ 2 และอื่น ๆ ดังนั้นคุณจะจบลงด้วย62 ⋅ 62 ⋅ 62 ⋅ ⋯ 62 =6220ซึ่งเป็นจำนวนมหาศาลอย่างไร้เหตุผล
การชนกับสตริง "เป้าหมาย"
2) ในขณะที่เราจัดตั้งขึ้นข้างต้นมี 6220สตริงที่อาจเกิดขึ้น คุณต้องการที่จะรู้ว่าคุณต้องคาดเดาว่าจะมีดีกว่า 1 ใน 100,000 อัตราต่อรองในการคาดเดาสตริง "เป้าหมาย" โดยพื้นฐานแล้วคุณกำลังถามอะไร
x6220≥1105
เพื่อให้ได้จุดคุณจะต้องปัดเศษ x ขึ้น (หรือเพิ่มถ้ามันเท่ากันอย่างแม่นยำ) แต่เมื่อคุณเห็นในวินาทีมันไม่สำคัญ
ผ่านพีชคณิตพื้นฐานเราสามารถจัดเรียงใหม่เป็น
105x105x105xx≥6220≥ ( 6.2 ⋅ 10))20≥6.220⋅1020≥6.220⋅1015
ทำคณิตศาสตร์ 6.220 เกี่ยวกับ 7 ⋅1015ดังนั้นเรามาเรียกมันทั้งหมด 7 ⋅1030 หรือรวบรัดมากขึ้นทั้งห่ามาก
แน่นอนว่าทำไมรหัสผ่านที่ยาวทำงานได้ดีจริง ๆ :-) สำหรับรหัสผ่านจริง ๆ คุณต้องกังวลเกี่ยวกับสตริงที่มีความยาวน้อยกว่าหรือเท่ากับยี่สิบซึ่งเพิ่มจำนวนความเป็นไปได้มากขึ้น
ทำซ้ำในรายการ
ตอนนี้ลองพิจารณาสถานการณ์อื่น ๆ สตริงถูกสร้างขึ้นแบบสุ่มและเราต้องการที่จะกำหนดจำนวนที่สามารถสร้างได้ก่อนที่จะมีโอกาส 1: 100,000 ของการจับคู่สตริงสองอัน ปัญหาคลาสสิกของรุ่นนี้เรียกว่าปัญหาวันเกิด (หรือ 'Paradox') และถามว่าความน่าจะเป็นที่คนสองคนมีวันคล้ายวันเกิดเท่าไหร่ บทความวิกิพีเดีย [1] ดูดีและมีบางตารางที่คุณอาจพบว่ามีประโยชน์ อย่างไรก็ตามฉันจะพยายามให้คุณได้คำตอบที่นี่ด้วย
สิ่งที่ควรทราบ:
- ความน่าจะเป็นของการแข่งขันและไม่มีการแข่งขันจะต้องรวมเป็น 1 ดังนั้น P( คู่ ) = 1 - P( ไม่ตรงกัน ) และในทางกลับกัน.
- สำหรับสองเหตุการณ์อิสระ A และ Bความน่าจะเป็นของ P( A & B ) = P( A ) ⋅ P( B ).
เพื่อให้ได้คำตอบเราจะเริ่มต้นด้วยการคำนวณความน่าจะเป็นที่จะไม่เห็นการจับคู่สำหรับจำนวนสตริงที่แน่นอน k. เมื่อเรารู้วิธีการทำเช่นนั้นเราสามารถกำหนดสมการนั้นให้เท่ากับขีด จำกัด (1 / 100,000) และแก้หาk. เพื่อความสะดวกขอเรียกยังไม่มีข้อความ จำนวนของสตริงที่เป็นไปได้ (6220)
เราจะ 'เดิน' รายการและคำนวณความน่าจะเป็นที่ k^ {th} สตริงตรงกับสตริงใด ๆ "เหนือ" ในรายการ สำหรับสตริงแรกเรามียังไม่มีข้อความ สตริงทั้งหมดและไม่มีอะไรในรายการดังนั้น Pk = 1( ไม่ตรงกัน ) =ยังไม่มีข้อความยังไม่มีข้อความ= 1. สำหรับสตริงที่สองยังคงมียังไม่มีข้อความ ความเป็นไปได้ทั้งหมด แต่หนึ่งในนั้นถูก "หมด" โดยสตริงแรกดังนั้นความน่าจะเป็นของการจับคู่สำหรับสตริงนี้คือ Pk = 2( ไม่ตรงกัน ) =ยังไม่มีข้อความ- 1ยังไม่มีข้อความ สำหรับสตริงที่สามมีสองวิธีในการจับคู่ดังนั้น ยังไม่มีข้อความ- 2 วิธีที่จะไม่ดังนั้น Pk = 3( ไม่ตรงกัน ) =ยังไม่มีข้อความ- 2ยังไม่มีข้อความและอื่น ๆ โดยทั่วไปความน่าจะเป็นของkข้อความที่ไม่ตรงกับที่อื่นคือ
Pk( ไม่ตรงกัน ) =ยังไม่มีข้อความ- k + 1ยังไม่มีข้อความ
อย่างไรก็ตามเราต้องการความน่าจะเป็นที่ไม่มีสิ่งใดตรงกันระหว่าง kเงื่อนไข เนื่องจากกิจกรรมทั้งหมดมีความเป็นอิสระ (ตามคำถาม) เราจึงสามารถคูณความน่าจะเป็นเหล่านี้เข้าด้วยกันดังนี้:
P( ไม่มีการแข่งขัน ) =ยังไม่มีข้อความยังไม่มีข้อความ⋅ยังไม่มีข้อความ- 1ยังไม่มีข้อความ⋅ยังไม่มีข้อความ- 2ยังไม่มีข้อความ⋯ยังไม่มีข้อความ- k + 1ยังไม่มีข้อความ
ที่สามารถลดความซับซ้อนได้เล็กน้อย:
P( ไม่มีการแข่งขัน )P( ไม่มีการแข่งขัน )P( ไม่มีการแข่งขัน )=ยังไม่มีข้อความ⋅ ( N- 1 ) ⋅ ( N- 2 ) ⋯ ( N- k + 1 )ยังไม่มีข้อความk=ยังไม่มีข้อความ!ยังไม่มีข้อความk⋅ ( N- k ) !=k ! ⋅ (ยังไม่มีข้อความk)ยังไม่มีข้อความk
ขั้นตอนแรกเพียงแค่คูณเศษส่วนเข้าด้วยกันส่วนที่สองใช้นิยามของแฟคทอเรียล (
k ! = ( k ) ⋅ ( k - 1 ) ⋅ ( k - 2 ) ⋯ 1) เพื่อแทนที่ผลิตภัณฑ์ของ
ยังไม่มีข้อความ- k + 1 ⋯ Nด้วยบางสิ่งที่จัดการได้ง่ายขึ้นเล็กน้อยและขั้นตอนสุดท้ายสลับเป็นสัมประสิทธิ์ทวินาม สิ่งนี้ทำให้เรามีสมการสำหรับความน่าจะเป็นที่ไม่มีการแข่งขันเลยหลังจากการสร้าง
kเงื่อนไข ในทางทฤษฎีคุณสามารถตั้งค่านั้นให้เท่ากับ
1100 , 000 และแก้ให้
k. ในทางปฏิบัติมันจะเป็นเรื่องยากที่จะตอบเพราะคุณจะทวีคูณ / หารด้วยจำนวนมาก - แฟคทอเรียลเติบโตอย่างรวดเร็วจริงๆ (
100 ! มีความยาวมากกว่า 150 หลัก)
อย่างไรก็ตามมีการประมาณทั้งในการคำนวณปัจจัยและสำหรับปัญหาทั้งหมด บทความนี้แนะนำ [2]
k = 0.5 +0.25 - 2 NLN( p )------------√
โดยที่ p คือความน่าจะเป็นที่จะไม่เห็นการแข่งขัน การทดสอบของเขาสูงสุดที่
ยังไม่มีข้อความ= 48 , 000แต่มันก็ค่อนข้างแม่นยำ ฉันได้รับประมาณ
3.7 ⋅1015.
อ้างอิง
[1] http://en.wikipedia.org/wiki/Birthday_problem
[2] Mathis, Frank H. (มิถุนายน 1991) "ปัญหาวันเกิดทั่วไป" SIAM Review (สมาคมเพื่ออุตสาหกรรมและคณิตศาสตร์ประยุกต์) 33 (2): 265–270 ลิงก์ JSTOR