我有一个复杂的问题。我目前正在尝试编写一个非常简单的路径查找版本,为此我需要一种方法来生成一个范围内的数字,每个数字必须与其他数字不同,并且大于最后一个数字。我该怎么做呢?所以输出看起来像:
1,5,6,9,15,18
答案 0 :(得分:1)
创建随机生成器函数:
public static int randInt(int min, int max) {
// Usually this can be a field rather than a method variable
Random rand = new Random();
// nextInt is normally exclusive of the top value,
// so add 1 to make it inclusive
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
(代码来自answer by Greg Case)。
在您想要的任何地方拨打电话,并查看:
int a;
a=randInt(min,max);
并在下一次解析先前生成的值,如:
randInt(a, max);
答案 1 :(得分:0)
使用reservoir sampling从您的范围中选择 n 号码。由于您按顺序浏览范围,因此对结果列表进行了排序。