Ruby 的 SecureRandom 和 n 的大小
我正在寻找 6 个随机十六进制字符,并使用 Ruby 的 SecureRandom< /code>
SecureRandom.hex(3)
将返回从 3 个字节的随机数据中解压出来的 6 个十六进制字符。
问题是,执行 SecureRandom.hex(6)[0,6]
是否会返回 6 个更加随机的十六进制字符,因为解包之前有 6 个字节的随机数据?就此而言,SecureRandom.hex(16)[0,6]
会更加随机吗?
对于我的应用程序,我只需要具有超过 1600 万个唯一值的 6 个字符,但我希望与已选择的数字发生冲突的机会尽可能低。那么,对随机字节使用较大的 n
会改善随机值在空间上的分布吗?还是没有必要?
I'm looking for 6 random hex characters, and am using Ruby's SecureRandom
SecureRandom.hex(3)
will return 6 hex characters unpacked from 3 bytes of random data.
The question is, will doing SecureRandom.hex(6)[0,6]
return 6 hex characters that are more random because there were 6 bytes of random data before the unpacking? For that matter, would SecureRandom.hex(16)[0,6]
be even more random?
For my application I only need the 6 characters with over 16 million unique values, but I want the chances of colliding with a number that was already picked to be as low as possible. So will using a larger n
for the random bytes improve the distribution of the random values over the space or is it unnecessary?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不会。选择较大随机十六进制字符串的六字符子字符串不会比使用生成为六字符字符串的子字符串更“随机”。
减少碰撞概率的唯一方法是拥有更多唯一的可能值。
No. Selecting a six character substring of a larger random hex string will be no more "random" than using one that is generated as a six character string.
The only way to reduce the probability of collisions is to have more unique possible values.