【发布时间】:2013-04-16 22:41:33
【问题描述】:
我遇到了在 Java 中生成 6 个介于 1 和 6 之间的随机数的问题。所有数字都必须是唯一的。当我输入 kolon 值 5 时,数组应该是这样的:
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
我不希望程序生成相同的两个数字。这里有什么问题?
相关代码:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter row quantity: ");
int kolon = input.nextInt();
Integer[][] dizi_asil = new Integer[kolon][6];
for (int i = 0; i < kolon; i++) {
Integer[] dizi = new Integer[6];
for (int j = 0; j < 6; j++) {
dizi[j] = (int) ((Math.random() * 6) + 1);
for (int u = 0; u < 1; u++) {
for (int k = 0; k < j; k++) {
while (dizi[k] == dizi[j]) {
dizi[j] = (int) ((Math.random()* 6) + 1);
u++;
}
}
}
dizi_asil[i][j] = dizi[j];
}
Arrays.sort(dizi_asil[i]);
}
for (int i = 0; i < dizi_asil.length; i++) {
for (int k = 0; k < dizi_asil[i].length; k++) {
System.out.print(dizi_asil[i][k] + "\t");
}
System.out.println();
}
【问题讨论】:
-
1 到 6 之间的 6 个唯一数字不是随机的。他们将永远是 1,2,3,4,5,6。它们的顺序可能是随机的,但不是数字。
-
如果 kolon=5 在您的示例中为什么是 4 行?
-
另外,你打电话给
Arrays.sort(dizi_asil[i]);。那么为什么你希望你的数组不被排序??? -
例如:当我运行程序时,有时我得到 1 2 4 5 6 6 。这是错误的,我必须总是得到 1 2 3 4 5 6
-
您不是要生成 6 个随机数,而是要生成 1 到 6 的随机 排列。尝试
Collection.shuffle,正如其他人在他们的答案中指出的那样。
标签: java arrays random numbers prng