簡體   English   中英

使用隨機變量會使C程序崩潰

[英]C program crashes with use of a random variable

我想用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;
        }
    }
}

您有一個“除以0”錯誤。

r = rand()%10;

給出r的范圍為0..9因此對於(i*j+i+j)%(r)的模數使用0會引起誤差。

我建議你用

r = 1 + rand()%10;

如果要用0或1填充它,是否可以不做三元模運算就直接更改它,以便rand()直接為網格元素提供其值?

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

            grid[i][j]= rand()%2;
        }
    }
}

這也將消除由(i*j+i+j)%(r)引起的零除問題(如Weather Vane在他的回答中所述)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM