【发布时间】:2013-03-07 22:28:41
【问题描述】:
我需要生成特定范围之间的数字,如果数字不适合,则在第一个周期之后,我需要将其从范围中删除。
例子:
我将从 [1-55] 范围内生成随机数。我要号码 24,但通过随机生成器生成。第一次循环后随机 生成器已生成编号 4。在下一个周期中,我想生成 来自相同范围的随机数,但不包括数字 4。所以范围是 - [1,54] / {4}。如果在下一个周期中生成数字 28,则范围将 更改为 - [1,54] /{4,28}。循环将重复直到数字 24 未生成。
我的进化算法需要它。如果我使用大范围,通过随机数生成算法生成所需的数字需要很长时间。如有任何建议,我将不胜感激。
【问题讨论】:
-
你走了多远?
-
他的典型起始范围是多少
-
没有取决于用户输入的典型范围。但是让我在例子中写的范围是一个典型的范围。我刚刚从 [1-54] 范围内生成随机数,但不知道如何继续。如何排除生成的数字?
-
搜索 Fisher-Yates shuffle 和 Floyd 算法以生成不重复的随机数。