0

私は6つのランダムな16進文字を探していて、Rubyを使用していますSecureRandom

SecureRandom.hex(3)3 バイトのランダム データからアンパックされた 6 つの 16 進文字を返します。

問題は、SecureRandom.hex(6)[0,6]アンパック前に 6 バイトのランダム データがあったため、よりランダムな 6 つの 16 進文字を返すかどうかです。さらに言えばSecureRandom.hex(16)[0,6]、さらにランダムになりますか?

私のアプリケーションでは、1,600 万を超える一意の値を持つ 6 文字だけが必要ですが、既に選択されている数字と衝突する可能性をできるだけ低くしたいと考えています。では、ランダム バイトに大きな値を使用nすると、空間全体のランダム値の分布が改善されますか、それとも不要ですか?

4

1 に答える 1

4

いいえ。より大きなランダムな 16 進文字列の 6 文字の部分文字列を選択しても、6 文字の文字列として生成された文字列を使用するよりも「ランダム」ではありません。

衝突の可能性を減らす唯一の方法は、可能な値をより一意にすることです。

于 2012-02-23T15:01:12.010 に答える