Kombinasi sederhana / pertanyaan probabilitas berdasarkan panjang string dan karakter yang memungkinkan

9

Dengan asumsi "keacakan lengkap" dan diberi string dengan panjang 20 karakter di mana masing-masing karakter mungkin salah satu dari 62 karakter yang mungkin:

  • Berapa jumlah total kombinasi yang mungkin? (Menebak 20 pangkat 62.)
  • Juga, jika string baru dipilih secara acak satu demi satu dan ditambahkan ke daftar string yang dipilih sejauh ini, berapa banyak string yang harus dipilih sebelum kemungkinan memilih string yang telah dipilih di bawah 1-in-100000 ( 105 )?

Catatan: 62 berasal dari: digit angka (0-9), huruf besar (AZ), dan huruf kecil (az).

kesalahan besar
sumber
2
Poin kedua Anda dapat dibaca dalam (setidaknya) dua cara yang memungkinkan. Saya ingin tahu yang Anda tertarik. ( 1 ) Probabilitas bahwa string ke- n cocok dengan salah satu string sebelumnya atau ( 2 ) Probabilitas bahwa pada saat string ke- n dipilih, ada beberapa duplikat dalam koleksi string yang ditarik sejauh ini. Jawaban untuk dua pertanyaan ini akan sangat berbeda. :)
kardinal
1
Mungkin mempertimbangkan alfabet dua karakter akan membuat perbedaan menjadi jelas. Biarkan huruf menjadi dan T . Kita dapat bertanya: ( 1 ) Untuk n apa yang kita miliki setidaknya 99% peluang string ke- n menjadi duplikat dari string sebelumnya? The n di sini adalah 8 karena satu-satunya cara kita gagal adalah jika urutan kami adalah baik T T T T H atau H H H H T , yang memiliki probabilitas total 2 - ( n - 1 ) . Atau, kami bertanya ( 2 ) Untuk apaHTnnnTTTTHHHHHT2(n1) apakah kita memiliki setidaknya 99% peluang untuk melihat duplikat? Dalam hal ini n = 3 karena pada saat kita telah melihat tiga string H atau T telah diulang setidaknya satu kali. nn=3HT
kardinal
1
Jawaban Matt menangani ( 1 ), yang pada dasarnya menjawab pertanyaan tentang apakah string "saya" cocok dengan milik orang lain. Tapi, jika Anda khawatir tentang string dua orang lain juga berpotensi cocok, maka Anda tertarik ( 2 ). Itu tergantung pada apakah Anda memiliki serangkaian minat tertentu yang Anda bandingkan dengan semua orang lain atau apakah Anda membandingkan semua string satu sama lain. Saya tidak yakin apakah saya membuatnya lebih jelas. (Masalah Anda bermuara pada salah satu dari dua varian yang disebut "masalah ulang tahun" yang terkenal).
kardinal
1
Kardinal, seperti biasa, benar. Saya berasumsi bahwa Anda memiliki satu string "target", yang untuknya Anda membuat daftar tebakan. Jika sebaliknya, Anda menghasilkan string secara acak dan ingin tahu nomor yang aman dibuat sebelum dua string apa pun cocok, maka jawabannya memang sangat berbeda. Saya akan mengubah jawaban saya untuk mengatasi kasus itu, jika Anda setuju.
Matt Krause
1
Saya tidak membuat contoh saya sebelumnya sepenuhnya jelas. Maaf soal itu. Saya sedang memikirkan alfabet dua huruf dan menggambar string satu panjang . Oleh karena itu, ketika saya menulis H H H H T , yang berdiri untuk s 1 = H , s 2 = H , ..., s n - 1 = H , s n = T . {H,T}HHHHTs1=Hs2=Hsn1=Hsn=T
kardinal

Jawaban:

11

Jumlah total kemungkinan

1) Tutup! Anda punya 62 pilihan untuk karakter pertama, 62 untuk ke-2, dll, jadi Anda berakhir dengan , yang merupakan angka yang sangat besar.62626262=6220

Tabrakan dengan String "Target"

2) Seperti yang kami tegaskan di atas, ada string potensial. Anda ingin tahu berapa banyak yang harus Anda tebak untuk memiliki peluang lebih dari 1 dalam 100.000 untuk menebak string "target". Pada dasarnya, Anda bertanya apa x6220 Untuk membuatnya tepat, Anda harus mengumpulkan x (atau menambahkan satu, jika mereka sama persis), tetapi seperti yang akan Anda lihat dalam hitungan detik, itu tidak masalah.

x62201105

Melalui aljabar dasar, kita dapat mengaturnya kembali menjadi

105x6220105x(6.210)20105x6.2201020x6.2201015

Melakukan matematika, adalah sekitar 7 10 15 , jadi mari kita sebut semuanya 7 10 30 atau, lebih ringkasnya, banyak sekali.6.2207101571030

Ini, tentu saja, mengapa kata sandi panjang bekerja dengan sangat baik :-) Untuk kata sandi asli, tentu saja, Anda harus khawatir tentang untaian yang panjangnya kurang dari atau sama dengan dua puluh, yang meningkatkan jumlah kemungkinan lebih banyak lagi.

Duplikat dalam daftar

Sekarang, mari kita pertimbangkan skenario lainnya. String dihasilkan secara acak dan kami ingin menentukan berapa banyak yang dapat dihasilkan sebelum ada peluang 1: 100.000 dari dua string yang cocok. Versi klasik dari masalah ini disebut Masalah Ulang Tahun (atau 'Paradox') dan menanyakan berapa kemungkinan bahwa dua orang memiliki ulang tahun yang sama. Artikel wikipedia [1] terlihat bagus dan memiliki beberapa tabel yang mungkin berguna bagi Anda. Namun demikian, saya akan mencoba memberi Anda rasa untuk jawabannya di sini juga.

Beberapa hal yang perlu diingat:

-Kemungkinan kecocokan dan tidak memiliki kecocokan harus berjumlah 1, jadi dan sebaliknya.P(match)=1P(no match)

-Untuk dua peristiwa independen dan B , probabilitas P ( A & B ) = P ( A ) P ( B ) .ABP(A&B)=P(A)P(B)

Untuk mendapatkan jawabannya, kita akan mulai dengan menghitung probabilitas tidak melihat kecocokan untuk sejumlah string . Setelah kita tahu bagaimana melakukan itu, kita dapat menetapkan persamaan itu sama dengan ambang (1 / 100.000) dan menyelesaikannya untuk k . Untuk kenyamanan, sebut saja N jumlah string yang mungkin ( 62 20 ).kkN6220

Kita akan 'berjalan' ke bawah daftar dan menghitung probabilitas bahwa string ^ {th} cocok dengan salah satu string "di atas" dalam daftar. Untuk string pertama, kami memiliki N total string dan tidak ada dalam daftar, jadi P k = 1 ( tidak cocok ) = NkN. Untuk string kedua, masih adakemungkinan totalN, tetapi salah satu dari mereka telah "habis" oleh string pertama, sehingga probabilitas kecocokan untuk string ini adalahPk=2(tidak cocok)=N-1Pk=1(no match)=NN=1N Untuk string ketiga, ada dua cara untuk itu kecocokan dan oleh karena ituN-2cara untuk tidak, jadiPk=3(tidak cocok)=N-2Pk=2(no match)=N1NN2 dan seterusnya. Secara umum, probabilitasstringktidak cocok dengan yang lain adalahPk(tidak cocok)=N-k+1Pk=3(no match)=N2Nk

Pk(no match)=Nk+1N

k

P(No Matches)=NNN1NN2NNk+1N
P(No Matches)=N(N1)(N2)(Nk+1)NkP(No Matches)=N!Nk(Nk)!P(No Matches)=k!(Nk)Nk
k!=(k)(k1)(k2)1Nk+1Nk1100,000k100!

k=0.5+0.252Nln(p)
N=48,0003.71015

Referensi

[1] http://en.wikipedia.org/wiki/Birthday_problem

[2] Mathis, Frank H. (Juni 1991). "Masalah Ulang Tahun yang Disamaratakan". Ulasan SIAM (Masyarakat untuk Industri dan Matematika Terapan) 33 (2): 265-270. Tautan JSTOR

Matt Krause
sumber
+1 Luar biasa, mengingat dengan jelas kemampuan matematika saya yang buruk menghasilkan pertanyaan, jadi saya akan meninggalkan pertanyaan itu tanpa jawaban selama sehari, tetapi terlihat baik bagi saya, dan jauh lebih jelas dari jawaban daripada yang saya harapkan - terima kasih!
kesalahan
1
Senang untuk membantu! Beri tahu saya jika ada yang tidak jelas. Untuk tendangan, saya berlari angka. Anda membutuhkan tebakan 7044234255469980229683302646164; seperti yang saya katakan - banyak!
Matt Krause
+1 @Matt Krause: +1 untuk komentar Anda di bawah jawaban; jawaban dan komitmen Anda untuk memberikan jawaban terbaik adalah teladan, patut dicatat, dan terima kasih atas semua kerja keras Anda!
kesalahan