これは基本的には数学的な問題ですが、非常にプログラムに関するものです:URLが10億文字含まれていて、それぞれのMD5ハッシュの最初の64ビットを取ると、衝突の頻度の種類私は期待する必要がありますか?1つの64ビット番号を持つURLを一意に識別する
1億のURLしかない場合、どのように答えが変わるのですか?
衝突は非常に稀ですが、これらのことは混乱する傾向があります。
私はMD5以外のものを使用する方が良いでしょうか?心配していますが、セキュリティは探していません。良い高速ハッシュ関数です。また、MySQLのネイティブサポートもいいです。
2^32(18,446,744,073,709,551,616)のところで、2^32と言った2^64を意味しますか?質問は64ビットについて話しますが、32ではなくです。 – unwind
いいえ、彼は2^32を意味します。つまり、100M URLの場合、1回の衝突確率は1%未満です。私はそれを取ると思う。 – itsadok
それは正しい、itsadok、私は2^32ではなく、2^64を意味する。それは誕生日のパラドックスの全体のポイントです。お互いに一致する任意の2つのランダムな値が1つのターゲットに一致する任意の1つのランダムな値のチャンスよりもはるかに高い確率 –