Gesamtzahl der Möglichkeiten
1) Schließen! Sie haben 62 Auswahlmöglichkeiten für das erste Zeichen, 62 für das zweite usw., so dass Sie am Ende , was eine absurd große Zahl ist.62⋅62⋅62⋅⋯62=6220
Kollision mit einer "Ziel" -String
2) Wie oben festgestellt, gibt es mögliche Zeichenfolgen. Sie möchten wissen, wie viele Sie erraten müssen, um eine bessere Wahrscheinlichkeit als 1 von 100.000 zu haben, die "Ziel" -String zu erraten. Im Wesentlichen fragen Sie, was Um es genau zu finden, müssten Sie x aufrunden (oder eins hinzufügen, wenn sie genau gleich sind), aber wie Sie gleich sehen werden, spielt es keine Rolle.6220
x6220≥1105
Durch grundlegende Algebra können wir das neu ordnen, wenn
105x105x105xx≥6220≥(6.2⋅10)20≥6.220⋅1020≥6.220⋅1015
Wenn man rechnet, ist ungefähr , also nennen wir das Ganze oder, genauer gesagt, eine ganze Menge.6.2207⋅10157⋅1030
Dies ist natürlich der Grund, warum lange Passwörter sehr gut funktionieren :-) Bei echten Passwörtern müssen Sie sich natürlich Gedanken über Zeichenfolgen mit einer Länge von höchstens zwanzig machen, was die Anzahl der Möglichkeiten noch weiter erhöht.
Duplikate in der Liste
Betrachten wir nun das andere Szenario. Zeichenfolgen werden zufällig generiert und wir möchten bestimmen, wie viele Zeichenfolgen generiert werden können, bevor die Wahrscheinlichkeit besteht, dass zwei Zeichenfolgen übereinstimmen. Die klassische Version dieses Problems heißt Geburtstagsproblem (oder 'Paradox') und fragt nach der Wahrscheinlichkeit, dass zwei von n Personen denselben Geburtstag haben. Der Wikipedia-Artikel [1] sieht anständig aus und enthält einige Tabellen, die Sie möglicherweise nützlich finden. Trotzdem werde ich versuchen, Ihnen auch hier den Geschmack für die Antwort zu geben.
Einige Dinge zu beachten:
-Die Wahrscheinlichkeit, dass eine Übereinstimmung muss 1 ergeben, sodass und umgekehrt.P(match)=1−P(no match)
-Für zwei unabhängige Ereignisse und ist die Wahrscheinlichkeit von .ABP(A&B)=P(A)⋅P(B)
Um die Antwort zu erhalten, berechnen wir zunächst die Wahrscheinlichkeit, dass für eine feste Anzahl von Zeichenfolgen keine Übereinstimmung gefunden wird . Sobald wir wissen, wie das geht, können wir diese Gleichung gleich dem Schwellenwert (1 / 100.000) setzen und nach . Nennen wir der Einfachheit halber die Anzahl der möglichen Zeichenfolgen ( ).kkN6220
Wir werden die Liste durchgehen und die Wahrscheinlichkeit berechnen, dass die Zeichenfolge ^ {th} mit einer der Zeichenfolgen "darüber" in der Liste übereinstimmt. Für die erste Zeichenfolge haben wir Gesamtzeichenfolgen und nichts in der Liste, also . Für die zweite Zeichenfolge gibt es noch Gesamtmöglichkeiten, aber eine davon wurde von der ersten Zeichenfolge "aufgebraucht", sodass die Wahrscheinlichkeit einer Übereinstimmung für diese Zeichenfolge Für die dritte Zeichenfolge gibt es zwei Möglichkeiten, eine Übereinstimmung zu und daher Möglichkeiten, dies nicht zu tun, also und so weiter. Im Allgemeinen ist die Wahrscheinlichkeit derkNPk=1(no match)=NN=1N N-2Pk=3(keine Übereinstimmung)=N-2Pk=2(no match)=N−1NN−2 kPk(keine Übereinstimmung)=N-k+1Pk=3(no match)=N−2Nk te Zeichenfolge, die nicht mit den anderen übereinstimmt, ist
Pk(no match)=N−k+1N
Wir wollen jedoch die Wahrscheinlichkeit, dass keine der Zeichenfolgen übereinstimmt . Da alle Ereignisse unabhängig sind (gemäß der Frage), können wir diese Wahrscheinlichkeiten einfach wie multiplizieren:
Das kann ein wenig vereinfacht werden:
Der erste Schritt multipliziert nur die Brüche, der zweite verwendet die Definition von Fakultät ( ), um die Produkte von zu ersetzenP ( keine Übereinstimmungen ) = N.k
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 mit etwas etwas überschaubarerem, und der letzte Schritt tauscht einen Binomialkoeffizienten ein. Dies gibt uns eine Gleichung für die Wahrscheinlichkeit, dass nach dem Erzeugen von Strings überhaupt keine Übereinstimmungen vorliegen. Theoretisch könnte man das gleich und nach . In der Praxis wird es schwierig sein, eine Antwort zu finden, da Sie mit großen Zahlen multiplizieren / dividieren werden - Fakultäten wachsen sehr schnell ( Ist mehr als 150 Stellen lang).
k1100,000k100!
Es gibt jedoch Annäherungen, sowohl für die Berechnung der Fakultät als auch für das gesamte Problem. Diese Arbeit [2] schlägt wobei p die Wahrscheinlichkeit ist, keine Übereinstimmung zu sehen. Seine Tests sind maximal , aber dort ist es immer noch ziemlich genau. Wenn Sie Ihre Zahlen eingeben, erhalte ich ungefähr .
k=0.5+0.25−2Nln(p)−−−−−−−−−−−−√
N=48,0003.7⋅1015
Verweise
[1] http://en.wikipedia.org/wiki/Birthday_problem
[2] Mathis, Frank H. (Juni 1991). "Ein allgemeines Geburtstagsproblem". SIAM Review (Gesellschaft für industrielle und angewandte Mathematik) 33 (2): 265–270. JSTOR Link