「完全なランダム性」を想定し、各文字が62の可能な文字の1つである可能性がある20文字の長さの文字列が与えられた場合:
- 可能な組み合わせの総数はいくつですか?(20の62乗を推測します。)
- また、新しい文字列が次々とランダムに選択され、これまでに選択された文字列のリストに追加された場合、すでに選択されている文字列を選択する機会が1-in-100000()?
注: 62の由来は、数字(0-9)、大文字(AZ)、および小文字(az)です。
「完全なランダム性」を想定し、各文字が62の可能な文字の1つである可能性がある20文字の長さの文字列が与えられた場合:
注: 62の由来は、数字(0-9)、大文字(AZ)、および小文字(az)です。
回答:
1)閉じる!あなたがで終わるようにするには、など、第二のための最初の文字、62のための62個の選択肢を持っている、ばかばかしいほど膨大な数です。
2)上記で確立したように、潜在的なストリングがあります。「ターゲット」文字列を推測する確率が100,000分の1を超えると推測するのに必要な数を知りたいとします。基本的に、あなたは何を求めているのxをスポットを当てるには、xを切り上げる(または、正確に等しい場合は1を加える)必要がありますが、すぐにわかるように、それは重要ではありません。
基本的な代数を通して、それを
数学をやって、程度である7 ⋅ 10 15、それでは全部呼んでみましょう7 ⋅ 10 30より簡潔または、たくさんの全体の一体を。
これが、もちろん、長いパスワードが本当にうまく機能する理由です:-)もちろん、実際のパスワードの場合、20文字以下の長さの文字列を心配する必要があります。
それでは、他のシナリオについて考えてみましょう。文字列はランダムに生成されます。2つの文字列が一致する確率が1:100,000になる前に生成できる数を決定します。この問題のクラシックバージョンは誕生日問題(または「パラドックス」)と呼ばれ、n人のうち2人が同じ誕生日をとる確率を尋ねます。ウィキペディアの記事[1]はまともな見た目で、役に立つと思われる表がいくつかあります。それでも、ここでも答えの味をお伝えできるように努力します。
覚えておくべきいくつかのこと:
-一致する確率と一致しない確率は合計で1になる必要があるため、あり、その逆も同様です
二つの独立したイベント-for およびBの確率P (A &B )= P (A )⋅ P (B )。
答えを得るために、固定数の文字列一致が見られない確率を計算することから始めます。その方法がわかったら、その方程式をしきい値(1 / 100,000)に設定し、kを解くことができます。便宜上、Nを可能な文字列の数(62 20)と呼びます。
リストを「ウォーク」して、 ^ {th}文字列がリスト内の「上の」文字列のいずれかに一致する確率を計算します。最初の文字列については、合計N個の文字列があり、リストには何もないため、P k = 1(一致なし)= N。2番目の文字列については、合計N個の可能性がありますが、そのうちの1つは最初の文字列によって「使い果たされ」ているため、この文字列の一致確率はPk=2(一致なし)=N−1です。 3番目の文字列の場合、一致する2つの方法があるため、N-2の方法では一致しないため、Pk=3(一致なし)=N-2など。一般に、k番目の文字列が他と一致しない確率は、Pk(一致なし)=N−k+1です。
ただし、階乗の計算と問題全体の両方について、近似があります。この論文[2]は示唆しています
[1] http://en.wikipedia.org/wiki/Birthday_problem
[2]マティス、フランクH.(1991年6月)。「一般的な誕生日問題」。SIAMレビュー(産業および応用数学学会)33(2):265–270。JSTORリンク