[英]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.