我必须填充一行多维数组,整数从1到3完全随机。 示例:如果我打印该行,可以给出:1 2 2 1 2 3 1 2 3
现在要做到这一点,我认为以下代码可以工作:
private void fillArray()
{
for(int i=0; i<10;i++)
{
PincodeRandom[0][i]=i;
PincodeRandom[1][i]= (int)Math.random()*3 +1;
}
}
然而,这导致仅用1(随机)整数填充整个第二行。 我该如何解决这个问题?
答案 0 :(得分:1)
如果您要使用Random
类,请确保在循环中创建外部实例,因为new Random()
将系统时间用作种子。因此,如果在同一个tick中创建了两个random,它们将生成相同的随机数序列。
private void fillArray()
{
Random rand = new Random();
for(int i=0; i<10;i++)
{
PincodeRandom[0][i]=i;
PincodeRandom[1][i]= rand.nextInt(2) + 1;
}
}
答案 1 :(得分:0)
试试这个...
Random r = new Random();
for(loop){
PincodeRandom[1][i]= = r.nextInt(4 - 1) + 1;
}
答案 2 :(得分:0)
(int)
会在您乘以3之前将Math.random()
强制转换为0,从而导致0 * 3 + 1
始终为1.尝试:
(int)(Math.random()*3) + 1;
答案 3 :(得分:0)
试试这个:
import java.util.Random;
public class Test {
public static void main(String[] args){
int[][] array = new int[2][10];
Random rand = new Random();
for(int i=0; i<10;i++)
{
array[0][i]=i;
array[1][i]= (int)rand.nextInt(3) +1;
}
for (int j=0;j<10;j++){
System.out.println(Integer.toString(array[1][j]));
}
}
}
答案 4 :(得分:-1)
这是因为(int)Math.random()使它等于0,因为Math.random()总是在0和1之间。
而是导入java.util.Random类。
并使用它: new Random()。nextInt(2)+1