Java 如何用int=1随机填充10%二维数组?
我有一个小问题,我开始学习java。 我需要创建二维数组,我需要用10%的整数填充这个数组,当然我的代码需要随机填充这个数组 需要一些关于如何填写10%的提示吗Java 如何用int=1随机填充10%二维数组?,java,arrays,Java,Arrays,我有一个小问题,我开始学习java。 我需要创建二维数组,我需要用10%的整数填充这个数组,当然我的代码需要随机填充这个数组 需要一些关于如何填写10%的提示吗 public static void main(String[] args) { int maxX = 10; int maxY = 10; int[][] Arr = new int[maxX][maxY]; Random r = new Random(); // random ints
public static void main(String[] args) {
int maxX = 10;
int maxY = 10;
int[][] Arr = new int[maxX][maxY];
Random r = new Random();
// random ints
for (int x = 0; x < maxX; x++) {
for (int y = 0; y < maxY; y++) {
Arr[x][y] = r.nextInt(2);
}
}
// printing Arr
for (int i = 0; i < Arr.length; i++) {
for (int j = 0; j < Arr[i].length; j++) {
System.out.print(Arr[i][j] + " ");
}
System.out.println();
}
}
您可以采取以下步骤: 假设您需要填充一个N*N数组 创建一个列表并添加到其中N*N/10 1s和N*N*9/10 0s。list.addAllCollections.nCopiescount,1或0可以在此处帮助您 在该列表上运行Collections.shuffle以获得随机顺序 迭代列表中的元素。前N个元素将成为2D数组的第一行,下N个元素将成为数组的第二行,依此类推
洗牌的另一种选择是选择10%xn个随机位置,如果0在该位置,则选择1,否则选择另一个位置。在伪代码中:
int[][] array = new int[N][N]
apply N * N / 10 times {
index = random(0 .. N * N)
if array(index) = 0 then array(index) = 1
else retry with another index
}
您需要将索引从0到N*N转换为2D数组中的一对i,j。我将使用double random=Math.random;
然后一个if来检查变量random是否小于或等于0.1创建数组,随机取一行和一列,在不超过百分比的情况下,检查位置是否为0,如果为是,则用1填充
int[][] array = new int[N][N];
int percentage = N*N/10;
int filled = 0;
while(filled <= percentage)
{
Random rand = new Random();
int i = rand.nextInt(N+1);
int j = rand.nextInt(N+1);
if(array[i][j] == 0)
{
filled++;
array[i][j] = 1;
}
}
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
System.out.print(array[i][j] + " ");
}
System.out.println();
}
欢迎来到堆栈溢出。你能更详细地描述一下你到目前为止采取了哪些步骤,以及问题的具体所在吗?您可以编辑问题并提供代码。