如何在一个范围内生成一个随机数,而不包括某些范围。例如:范围为1-10,但不是2-4或7。到目前为止,我使用的解决方案:
你的解决方案是什么?
发布于 2008-10-12 20:11:48
(b)使用单个范围并将其映射到允许的值。
(a)速度较慢,运行时间是不确定的,因为您必须等到得到正确范围内的数字为止。如果你跳过一个大范围,你就会被冲洗掉。
(c)比(B)复杂;不需要时不要增加复杂性。
发布于 2008-10-12 20:12:38
这将取决于排除范围有多少/多大。测试dis允许的范围(您的选择1)将可以很好地为小集;不需要复杂的解决方案,一个简单的问题。解决方案3将更好地适用于更多的排除集。解决方案2是大多数工作,但可能是最正确的理论解决方案。
发布于 2008-10-12 20:13:07
我通常使用上面第二个符号描述的技术,特别是当允许的数字集相当小的时候。从统计的角度来看,这很容易破坏结果的随机性,或者使结果偏离平面分布。
它有一个额外的优点,允许一个单一的选择(如交易牌或挑选宾果球).您只需从地图中移除已选定的值。
https://stackoverflow.com/questions/195956
复制相似问题