Ruby 的 SecureRandom 和 n 的大小

发布于 2025-01-08 05:49:30 字数 506 浏览 0 评论 0原文

我正在寻找 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聚集的泪 2025-01-15 05:49:30

不会。选择较大随机十六进制字符串的六字符子字符串不会比使用生成为六字符字符串的子字符串更“随机”。

减少碰撞概率的唯一方法是拥有更多唯一的可能值。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文