矩阵C编程中的随机数生成

时间:2016-04-08 10:39:15

标签: random

我试图设计一个输出随机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);

}

3 个答案:

答案 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。