【发布时间】:2014-11-18 05:41:07
【问题描述】:
我正在解决一个问题,我试图获取一定百分比的字符并使用 Math.random 将它们随机填充到 5x5 数组中,以在二维数组中存储 25 个项目。我现在想出了这个,但我不明白为什么它没有填充我想要的字符。它只是在做“X”而不是随机的,它似乎与 X 的总数是一致的。我试图输出 X、O 的百分比以及剩下的空白。它只输出 10 个 X,它们似乎不是随机的。如果我能得到任何关于为什么会发生这种情况的建议,我将不胜感激。
public static void main(String []args){
char [][] tissue = new char [5][5];
assignCellTypes(tissue,40,40);
}
public static void assignCellTypes(char[][] tissue,int percentO, int percentX){
double cellx=0.0;
double cellO=0.0;
double totalO=0;
double totalX = 0;
totalO = (double)percentO/100;
totalX = (double)
percentX/100;
cellx = totalX *(tissue.length*tissue.length);
cellO = totalO *(tissue.length*tissue.length);
int i;
int j ;
for(int row = 0;row<tissue.length;row++){
for(int col = 0;col<tissue[row].length;col++){
if(cellx>0){
i = (int)Math.floor(Math.random()*tissue.length);
j = (int)Math.floor(Math.random()*tissue.length);
tissue[i][j] = 'X';
System.out.print(tissue[i][j] + " ");
cellx--;
if(cellO>0 && tissue[i][j] != 'X' ){
i = (int)Math.floor(Math.random()*tissue.length);
j = (int)Math.floor(Math.random()*tissue.length);
tissue[i][j] = 'O';
System.out.print(tissue[i][j] + " ");
cellO--;
if(tissue[i][j] != 'X' && tissue[i][j] != 'O'){
tissue[i][j] = ' ';
System.out.print(tissue[i][j] + " ");
}
}
}
}
System.out.println();
}
}
}
【问题讨论】: