我试图设计一个输出随机0和1的网格的程序,所以网格中的每个位置都有可能有1而不是0。我已设法得到用可变大小排序的网格,但我想不出一种方法可以随机为每个位置分配一个数字。到目前为止,我所做的就是将所有位置分配给0。
int Lx,Ly,x,y;
printf("Input height\n");
scanf("%d", &Lx);
printf("Input width\n");
scanf("%d", &Ly);
char mat[Lx][Ly];
for(x=0;x<Lx;x++)
for(y=0;y<Ly;y++)
mat[Lx][Ly]='0';
for(x=0;x<Lx;x++)
{
for(y=0;y<Ly;y++)
printf("%c\t",mat[Lx][Ly]);
putchar('\n');
}
return(0);
}
答案 0 :(得分:0)
使用rand() % 2
:
char mat[Lx][Ly];
for (x=0; x < Lx; x++)
{
for (y=0; y < Ly; y++)
{
int i = rand() % 2; // 0 or 1 as int
char cell = '0' + i; // 0 or 1 as ASCII character
mat[x][y] = cell; // store character in matrix
}
}
打印
for(x=0; x < Lx; x++)
{
for (y=0; y < Ly; y++)
printf("%c\t",mat[x][y]);
putchar('\n');
}
}
答案 1 :(得分:0)
垫[Lx的] [Ly的] = X; 其中x是随机函数的其余部分除以2
答案 2 :(得分:0)
在for循环中只需分配如下的元素:
for(x=0;x<Lx;x++)
{
for(y=0;j<Ly;y++)
{
mat[x][y]=rand()%2;
}
}
使用此元素,所有元素将为0或1,因为它生成的mod 2值为0或1。