Java矩阵如何将int 1或0分配给2D数组?
这是我的部分代码。我想首先将随机数分配给矩阵总体[],然后将随机数与特定数字ranP进行比较,如果总体[]【】Java矩阵如何将int 1或0分配给2D数组?,java,arrays,indexing,Java,Arrays,Indexing,这是我的部分代码。我想首先将随机数分配给矩阵总体[],然后将随机数与特定数字ranP进行比较,如果总体[]【】
arrayindexoutofboundsexception 0
在这个问题上需要帮助。谢谢
randGen = new Random();
double randNum = randGen.nextDouble();
for ( int i = 0; i < 11; i++){
for (int k = 0; k < inipopulationsize; k++){
for (int j = 0; j < 25; j++){
ranP = 0.5;
//TMaxtrix[i][j] = matrix[i][j];
System.out.println(matrix[i][j] + " ");
population = new double[k][j];
System.out.println("randNum: " + randNum);
population[k][j] = randNum;
if (randNum <= ranP){
population[k][j] = 1;
}
else
population[k][j] = 0;
System.out.println("population: " + population[k][j]);
}//j loop
}//k loop
}//i loop
这是我自己学的,不上课。如果这真的困扰着你的专家,你为什么不干脆忽略它,节省时间回家看电影或者花更多的时间和家人在一起呢?感谢这里好人的帮助。但你真可耻,你只懂讽刺。以下是最终有效的方法:
randGen = new Random();
population = new int[inipopulationsize][25];
for ( int i = 0; i < population.length; i++){
for (int j = 0; j < population[i].length; j++){
double randNum = randGen.nextDouble();
ranP = 0.5;
if (i < 11){
//System.out.println(matrix[i][j] + " ");
}
if (randNum <= ranP){
population[i][j] = 1;
}
else
population[i][j] = 0;
//System.out.println("population index: " + i + " Dieasease index: " + j + " DI on (1) or off (0): " + population[i][j] + "");
}//j loop
}//i loop
我不认为有理由使用3个循环和一个2d数组
Random randGen = new Random();
double randNum;
for(int i=0; i<population.length; i++){
for(int j=0; j<population[i].length; j++){
randNum = ranGen.nextDouble();
if(randNum<0.5) population[i][j] = 0;
else population[i][j] = 1.0;
}//j loop
}//i loop
第三个循环是因为需要二维数组吗?如果是这样,您可能应该查看二维数组的ArrayList
int inipopulationsize = 25;
double[][] population;
Random randGen = new Random();
double randNum = randGen.nextDouble();
double ranP = 0.5;// outside loops
population = new double[inipopulationsize][25]; // out
for (int k = 0; k < inipopulationsize; k++){
for (int j = 0; j < 25; j++){
randNum = randGen.nextDouble();//i assume you want new random every time
if (randNum <= ranP){
population[k][j] = 1;
}
else
population[k][j] = 0;
}//j loop
}//k loop
System.out.println(Arrays.deepToString(population));
您的问题是引用的项目超出了2D数组的边界 让我们看看你的代码。这条线:人口=新的双[k][j];声明大小为kxj的新二维数组。那么在这行中:人口[k][j]=randNum;尝试引用同一2D数组的第k列和第j行中的项。这在Java数组中是不合法的 Java数组是0索引的,这意味着对于大小为k的数组,索引的范围从0到k-1。索引k中没有项。这就是您收到索引越界错误的原因 出现arrayindexoutofboundsexception 0的确切错误是因为在第一次迭代时,您创建了大小为0×0的填充。然后尝试访问第0列和第0行中的项目,即第一个项目。但是,由于填充数组的大小为0,因此它没有空间,甚至索引0也超出了范围 然而,我甚至不确定这是你想要做的 在循环的每次迭代中都要声明一个2D数组。如果您要做的只是在PopulationSizeBy25中创建一个大小为的数组,这些是k和j的初始值,那么您需要在这两个嵌套循环之外声明它。也许甚至在第三个循环之外,因为我甚至不确定这个循环在做什么
在上循环了解如何有效地将0和1随机分配给人口数组。randP设置为0.5时,每个变量都有50%的机会出现。您必须阅读并更新代码,以显示您是如何实例化变量population and matrixIt的。现在还不清楚您想在这里做什么。请编辑您的问题,以清楚地解释您的最终目标是什么。它是一个随机分布的1和0的2D数组,还是这样的数组的矩阵?这有点难说。