栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何确保随机数是唯一的而不是重复的?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何确保随机数是唯一的而不是重复的?

有多种方法可以实现这一目标,哪种方法更合适,取决于您需要从多少个数字中选择。

  • 如果要从大量潜在数字中选择少量的随机数,则最好将先前选择的数字存储在一组中,然后“手动”检查重复项。在大多数情况下,您实际上不会获得任何重复,并且从实际角度而言,该测试的成本实际上为零。听起来可能并不雅致,但实际上并不像听起来那么糟糕。
  • 一些基本的随机数生成算法不会在其“原始”级别上生成重复项。因此,例如,一种称为XORShift生成器的算法可以有效地产生一定范围内的所有数字,将其改组为无重复项。因此,您基本上可以从序列中选择一个随机的起点,然后只生成下一个n个数字,就知道不会重复。但是在这种情况下,您不能随意选择“最大值”:它必须是所讨论生成器的自然最大值。
  • 如果可能的数字范围很小,但是您需要选择的数字数量在该范围的几个数量级以内,那么您可以将其视为随机 选择 问题。例如,要在10,000,000范围内选择100,000个数字而不重复,可以执行以下操作:

令m为到目前为止我选择的随机数

对于i = 1至10,000,000

生成0-1范围内的随机(浮点)数r

如果(r <(100,000-m)/(10,000,000-i)),则将i添加到列表中并递增m

随机排列列表,然后根据需要从列表中顺序选择数字

但是很明显,如果您需要选择整个数字范围中相当大的一部分,那么选择后者就没有多大意义了。如果要选择1到10亿范围内的10个数字,那么当您仅通过检查重复项来生成十亿个随机数时,您实际上就不太可能获得重复项,而最终只能生成10个随机数数字。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469996.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号