Ruby的SecureRandom和n的大小

时间:2012-02-23 14:15:25

标签: ruby random prng

我正在寻找6个随机的十六进制字符,并使用Ruby的SecureRandom

SecureRandom.hex(3)将从3个字节的随机数据中返回6个十六进制字符。

问题是,执行SecureRandom.hex(6)[0,6]会返回6个更随机的十六进制字符,因为在解包之前有6个字节的随机数据吗?就此而言,SecureRandom.hex(16)[0,6]会更随机吗?

对于我的应用程序,我只需要6个字符,其中包含超过1600万个唯一值,但我希望与已经选择的数字碰撞的可能性尽可能低。因此,对随机字节使用更大的n会改善空间上随机值的分布,还是不必要?

1 个答案:

答案 0 :(得分:4)

没有。选择一个较大的随机十六进制字符串的六个字符的子字符串将不再比使用一个六字符字符串生成的字符串“随机”。

降低碰撞概率的唯一方法是拥有更多独特的可能值。