Numero totale di possibilità
1) Chiudi! Hai 62 scelte per il primo personaggio, 62 per il 2 °, ecc., Quindi finisci con , che è un numero assurdamente enorme.62 ⋅ 62 ⋅ 62 ⋅ ⋯ 62 = 6220
Collisione con una stringa "Target"
2) Come stabilito sopra, ci sono stringhe potenziali. Volete sapere quanti ne dovreste indovinare per avere una probabilità migliore di 1 su 100.000 di indovinare la stringa "target". In sostanza, stai chiedendo cosa x6220 Per metterlo a posto, dovresti arrotondare x per eccesso (o aggiungerne uno, se sono esattamente uguali), ma come vedrai tra un secondo, non importa.
X6220≥ 1105
Attraverso l'algebra di base, possiamo riorganizzarlo come
105X105X105XX≥ 6220≥ ( 6,2 ⋅ 10 )20≥ 6.220⋅ 1020≥ 6.220⋅ 1015
Facendo la matematica, è circa 7 ⋅ 10 15 , quindi chiamiamo tutto 7 ⋅ 10 30 o, più succintamente, un sacco di cose.6.2207 ⋅ 10157 ⋅ 1030
Questo è, ovviamente, il motivo per cui le password lunghe funzionano davvero bene :-) Per le password reali, ovviamente, devi preoccuparti di stringhe di lunghezza inferiore o uguale a venti, che aumenta ancora di più il numero di possibilità.
Duplicati nell'elenco
Consideriamo ora l'altro scenario. Le stringhe vengono generate casualmente e vogliamo determinare quante possono essere generate prima che ci sia una probabilità 1: 100.000 di una corrispondenza di due stringhe. La versione classica di questo problema si chiama Problema del compleanno (o "Paradox") e chiede quale sia la probabilità che due persone n abbiano lo stesso compleanno. L'articolo di Wikipedia [1] sembra decente e ha alcune tabelle che potresti trovare utili. Tuttavia, proverò a darti il sapore della risposta anche qui.
Alcune cose da tenere a mente:
-La probabilità di una corrispondenza e di non avere una corrispondenza deve essere pari a 1, quindi e viceversa.P( corrispondenza ) = 1 - P( nessuna corrispondenza )
-Per due eventi indipendenti e B , la probabilità di P ( A e B ) = P ( A ) ⋅ P ( B ) .UNBP( A e B ) = P( A ) ⋅ P( B )
Per ottenere la risposta, inizieremo calcolando la probabilità di non vedere una corrispondenza per un numero fisso di stringhe . Una volta che sappiamo come farlo, possiamo impostare quell'equazione uguale alla soglia (1 / 100.000) e risolvere per k . Per comodità, chiamiamo N il numero di stringhe possibili ( 62 20 ).KKN6220
Cammineremo lungo l'elenco e calcoleremo la probabilità che la stringa ^ {th} corrisponda a una qualsiasi delle stringhe "sopra" nella lista. Per la prima stringa, abbiamo N stringhe totali e niente nell'elenco, quindi P k = 1 ( nessuna corrispondenza ) = NkN. Per la seconda stringa, ci sono ancoraNpossibilità totali, ma una di queste è stata "utilizzata" dalla prima stringa, quindi la probabilità di una corrispondenza per questa stringa èPk=2(nessuna corrispondenza)=N-1Pk=1(no match)=NN=1N Per la terza stringa, ci sono due modi per farlo corrispondere e quindiN-2modi per non farlo, quindiPk=3(nessuna corrispondenza)=N-2Pk=2(no match)=N−1NN−2 e così via. In generale, la probabilità che lakesima stringa non corrisponda alle altre èPk(nessuna corrispondenza)=N-k+1Pk=3(no match)=N−2Nk
Pk(no match)=N−k+1N
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⋯Nk1100,000k100!
k=0.5+0.25−2Nln(p)−−−−−−−−−−−−√
N=48,0003.7⋅1015
Riferimenti
[1] http://en.wikipedia.org/wiki/Birthday_problem
[2] Mathis, Frank H. (giugno 1991). "Un problema di compleanno generalizzato". Revisione SIAM (Society for Industrial and Applied Mathematics) 33 (2): 265–270. JSTOR Link