首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >产生随机数排除范围

产生随机数排除范围
EN

Stack Overflow用户
提问于 2008-10-12 20:09:46
回答 5查看 2.4K关注 0票数 6

如何在一个范围内生成一个随机数,而不包括某些范围。例如:范围为1-10,但不是2-4或7。到目前为止,我使用的解决方案:

  • 随机生成一个测试,如果它在dis允许的范围内.根据结果,可以输出数字,也可以重试。
  • 映射允许范围达到统一范围。得到1到6之间的随机图,然后映射回(即.6变成10)。
  • 创建允许的范围(1-1,5-6,8-10)。随机选择一个范围(可选择使用权重)和选定范围内的一个数字。

你的解决方案是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-10-12 20:11:48

(b)使用单个范围并将其映射到允许的值。

(a)速度较慢,运行时间是不确定的,因为您必须等到得到正确范围内的数字为止。如果你跳过一个大范围,你就会被冲洗掉。

(c)比(B)复杂;不需要时不要增加复杂性。

票数 8
EN

Stack Overflow用户

发布于 2008-10-12 20:12:38

这将取决于排除范围有多少/多大。测试dis允许的范围(您的选择1)将可以很好地为小集;不需要复杂的解决方案,一个简单的问题。解决方案3将更好地适用于更多的排除集。解决方案2是大多数工作,但可能是最正确的理论解决方案。

票数 1
EN

Stack Overflow用户

发布于 2008-10-12 20:13:07

我通常使用上面第二个符号描述的技术,特别是当允许的数字集相当小的时候。从统计的角度来看,这很容易破坏结果的随机性,或者使结果偏离平面分布。

它有一个额外的优点,允许一个单一的选择(如交易牌或挑选宾果球).您只需从地图中移除已选定的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/195956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档