我正在尝试根据用户输入的内容以 2 组的形式获取随机数 0 - 499。比如 234 和 58,这就是一组,但用户可能会提示他们想要 8 组。我试图确保不会出现多余的数字,例如 234 和 58、12 和 444、198 和 58。(58 出现了两次。)
我试图防止这种情况的方法是将找到的数字放入一个数组中,当我绕过下一个匹配项时,我会检查数组以确保它们尚未被使用。只是想知道最好的方法是什么。很明显,在第一次周围没有选择数字,所以我不需要检查。但是接下来如果我得到一个多余的怎么办?我将获取数字然后检查数组,如果它已经在数组中,我该如何返回并获取新数字?一个做while循环可能吗?
这是我在做什么:
//now add the specified number of random connections
System.out.println();
System.out.println("new connection(s): ");
//array for keeping track of the new connections to prevent redundant add's
int redundant [] = new int[con*2];
for( int i = 1; i <= con; i++ ){
Random ran = new Random();
if( i == 1){
int ran1 = ran.nextInt(sWorld.length-1) + 1;
int ran2 = ran.nextInt(sWorld.length-1) + 1;
redundant[i - 1] = ran1;
redundant[i] = ran2;
System.out.println(" " + ran1 + " - " + ran2);
}
else{
int ran1 = ran.nextInt(sWorld.length-1) + 1;
int ran2 = ran.nextInt(sWorld.length-1) + 1;
//need help
}
提前致谢!
编辑。使用下面的方法(使用集合)
List<Integer> nums = new LinkedList<Integer>();
for( int i = 0; i <= 499; i++ ){
nums.add(i);
}
//shuffle the collection for more randomness
System.out.println();
System.out.println("new connection(s): ");
for (int x = 1; x <= con; x++){
Collections.shuffle(nums);
Random ran = new Random();
int r1 = nums.remove(ran.nextInt(nums));
int r2 = nums.remove(ran.nextInt(nums));
但是无法获取随机数,有什么帮助吗?