我首先记下了我的代码然后无法确保它是6个不同的数字。
public class JavaTest{
public static void main(String[] args){
int[] list = new int[6];
int number = (int)(Math.random() * 10 + 1);
for (int i = 0; i < list.length; i++){
list[i] = number;
number = (int)(Math.random() * 10 + 1);
for (int j = 1; j < i; j++){
number = (int)(Math.random() * 10 + 1);
if (number == list[j])
number = (int)(Math.random() * 10 + 1);
}
}
for (int i = 0; i < list.length; i++){
System.out.print(list[i] + " ");
}
}
}
我认为我的内部循环j有问题,但我不知道如何改进它。任何人都可以帮我修改它吗?非常感谢!!
答案 0 :(得分:8)
您可以执行以下操作:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Collections.shuffle(list);
然后取6个第一个数字。
不使用集合:
int[] list = new int[6];
boolean[] used = new boolean[10];
for (int i = 0; i < 6; i++) {
int number = (int) ((10 - i) * Math.random());
for (int a = 0; a <= number; a++) {
if (used[a]) {
number++;
}
}
list[i] = number + 1;
used[number] = true;
}
答案 1 :(得分:3)
你可以使用Set。 Set将确保有6个不同的数字。
public static void main(String[] args) {
Random random = new Random();
Set<Integer> numbers = new HashSet<>(6);
while (numbers.size() < 6) {
numbers.add(1 + random.nextInt(10));
}
System.out.println(numbers);
}
答案 2 :(得分:0)
你可以这样做:
public static int randInt(int min, int max) {
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
来源:How do I generate random integers within a specific range in Java?