C程序使用随机变量崩溃

xSo*_*oDx 0 c random

我想用1和0填充网格.由于随机变量r,我的程序崩溃了.它与常数完全一致(例如:比如说r = 8).我用过srand(time(NULL));

void initGrid(int grid[GRID_HEIGHT][GRID_WIDTH])
{
    int i,j,r;
    for(i=0;i<GRID_HEIGHT;i++)
    {
        r = rand()%10;
        for(j=0;j<GRID_WIDTH;j++)
        {

            grid[i][j]= (i*j+i+j)%(r)<=2?1:0;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Wea*_*ane 5

您有一个"除以0"错误.

r = rand()%10;
Run Code Online (Sandbox Code Playgroud)

给出的范围r作为0..9这样使用0的模量(i*j+i+j)%(r)导致错误.

我建议你用

r = 1 + rand()%10;
Run Code Online (Sandbox Code Playgroud)