我有一个复杂的问题。我目前正在尝试编写一个非常简单的路径查找版本,为此我需要一种方法来生成一个范围内的数字,并且每个数字必须与其他数字不同,并且大于最后一个数字。我该怎么做呢?所以输出看起来像:
1,5,6,9,15,18
创建一个随机生成器函数:
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;
}
(代码来自Greg Case 的回答)。
在任何你想要的地方调用它并检查如下:
int a;
a=randInt(min,max);
并在下一次解析之前生成的值,例如:
randInt(a, max);
使用水库采样从您的范围中选择n 个数字。由于您正在按顺序遍历范围,因此对结果列表进行了排序。