2012-02-23 4 views
0

のサイズ私は6つのランダム進文字を探しています、そしてRubyのSecureRandomRubyのSecureRandomのとn

SecureRandom.hex(3)を使用していますが、ランダムなデータの3つのバイトからアンパック6進文字を返します。

質問がありますか?SecureRandom.hex(6)[0,6]アンパック前に6バイトのランダムデータがあったのでランダムな6桁の16文字を返しますか?その点については、SecureRandom.hex(16)[0,6]はもっとランダムでしょうか?

私のアプリケーションでは、1600万を超えるユニークな値を持つ6文字しか必要ありませんが、私はできるだけ低い値に選んだ数値と衝突する可能性があります。だからランダムなバイトのために大きいnを使用することは、スペース上のランダムな値の分布を改善するか、それは不要ですか?

答えて

4

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

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

+1

このようなことを「よりランダム」にすることを開始するときはいつでも、ランダム性アリーナの主要なコードの匂いです。 6つのランダムな文字を与えるRNGの出力を信頼できない場合、16からの部分集合はもはやランダムではありません。 –

関連する問題