Całkowita liczba możliwości
1) Zamknij! Masz 62 opcje dla pierwszego znaku, 62 dla drugiego itd., Więc otrzymujesz , co jest absurdalnie dużą liczbą.62⋅62⋅62⋅⋯62=6220
Zderzenie z ciągiem „docelowym”
2) Jak ustaliliśmy powyżej, istnieje potencjalnych ciągów. Chcesz wiedzieć, ile trzeba odgadnąć, aby mieć więcej niż 1 na 100 000 szans na odgadnięcie ciągu „docelowego”. Zasadniczo pytasz, co Aby to zrobić, musisz zaokrąglić x w górę (lub dodać jeden, jeśli są dokładnie równe), ale jak zobaczysz za sekundę, to tak naprawdę nie ma znaczenia.6220
x6220≥1105
Za pomocą podstawowej algebry możemy zmienić to ustawienie jako
105x105x105xx≥6220≥(6.2⋅10)20≥6.220⋅1020≥6.220⋅1015
Robienie matematyki, to około , więc nazwijmy to wszystko lub, bardziej zwięźle, cholernie dużo.6.2207⋅10157⋅1030
Dlatego oczywiście długie hasła działają naprawdę dobrze :-) W przypadku prawdziwych haseł należy oczywiście martwić się ciągami o długości mniejszej lub równej dwadzieścia, co jeszcze bardziej zwiększa liczbę możliwości.
Duplikaty na liście
Teraz rozważmy inny scenariusz. Ciągi są generowane losowo i chcemy ustalić, ile można wygenerować, zanim będzie szansa 1: 100 000 na dopasowanie dwóch ciągów. Klasyczna wersja tego problemu nazywa się Problemem Urodzinowym (lub „Paradoksem”) i pyta, jakie jest prawdopodobieństwo, że dwie spośród n osób mają te same urodziny. Artykuł w Wikipedii [1] wygląda przyzwoicie i zawiera kilka tabel, które mogą okazać się przydatne. Niemniej jednak postaram się dać ci smak odpowiedzi tutaj.
Kilka rzeczy, o których należy pamiętać:
- Prawdopodobieństwo dopasowania i braku dopasowania musi 1, więc i odwrotnie.P(match)=1−P(no match)
-W przypadku dwóch niezależnych zdarzeń i prawdopodobieństwo .ABP(A&B)=P(A)⋅P(B)
Aby uzyskać odpowiedź, zaczniemy od obliczenia prawdopodobieństwa nie znalezienia dopasowania dla określonej liczby ciągów . Kiedy już wiemy, jak to zrobić, możemy ustawić to równanie na wartość progową (1/100 000) i rozwiązać dla . Dla wygody nazwijmy liczbą możliwych ciągów znaków ( ).kkN6220
Będziemy „chodzić” po liście i obliczać prawdopodobieństwo, że ciąg ^ {th} pasuje do dowolnego ciągu „powyżej” na liście. Dla pierwszego ciągu mamy całkowitą liczbę ciągów i nic na liście, więc . W przypadku drugiego ciągu wciąż istnieje całkowitych możliwości, ale jedno z nich zostało „wykorzystane” przez pierwszy ciąg, więc prawdopodobieństwo dopasowania dla tego ciągu wynosi W przypadku trzeciego ciągu istnieją dwa sposoby dopasowania, a zatem sposoby, aby tego nie , więc i tak dalej. Zasadniczo prawdopodobieństwokNPk=1(no match)=NN=1NPk=2(no match)=N−1NN−2Pk=3(no match)=N−2Nk ciąg nie pasujący do pozostałych to
Pk(no match)=N−k+1N
Chcemy jednak prawdopodobieństwa braku dopasowania między dowolnymi ciągami . Ponieważ wszystkie zdarzenia są niezależne (na pytanie), możemy po prostu pomnożyć te prawdopodobieństwa razem, tak jak to:
Można to trochę uprościć:
W pierwszym kroku po prostu mnoży się ułamki, w drugim stosuje się definicję silni ( ), aby zastąpić produktyk
P(No Matches)=NN⋅N−1N⋅N−2N⋯N−k+1N
P(No Matches)P(No Matches)P(No Matches)=N⋅(N−1)⋅(N−2)⋯(N−k+1)Nk=N!Nk⋅(N−k)!=k!⋅(Nk)Nk
k!=(k)⋅(k−1)⋅(k−2)⋯1N−k+1⋯N z czymś nieco łatwiejszym do zarządzania, a ostatni krok zamienia się w dwumianowy współczynnik. To daje nam równanie prawdopodobieństwa braku dopasowania po wygenerowaniu ciągów. Teoretycznie możesz ustawić tę wartość na i rozwiązać dla . W praktyce trudno będzie znaleźć odpowiedź, ponieważ mnożymy / dzielimy przez ogromne liczby - silnia rosną bardzo szybko ( Ma więcej niż 150 cyfr).
k1100,000k100!
Istnieją jednak przybliżenia, zarówno do obliczania silni, jak i do całego problemu. Ten artykuł [2] sugeruje gdzie p jest prawdopodobieństwem braku dopasowania. Jego testy osiągnęły maksimum przy , ale nadal są dość dokładne. Po podłączeniu twoich liczb otrzymuję około .
k=0.5+0.25−2Nln(p)−−−−−−−−−−−−√
N=48,0003.7⋅1015
Bibliografia
[1] http://en.wikipedia.org/wiki/Birthday_problem
[2] Mathis, Frank H. (czerwiec 1991). „Ogólny problem urodzinowy”. Przegląd SIAM (Society for Industrial and Applied Mathematics) 33 (2): 265–270. JSTOR Link