在C中使用rand()生成大量随机数时出现分段错误

时间:2015-04-30 07:37:34

标签: c arrays random segmentation-fault

我正在编写一个程序,我需要将2D数组(板)的多个元素(由空白变量指定)设置为0.(数组大小为9x9)这些位置必须随机拾取并且一旦我使用以下代码段来执行此操作,程序在某些情况下最终会出现分段错误,并且不会将所需的位置数设置为0.

i = rand() % 10;
j = rand() % 10;

if (board[i][j]){
    board[i][j] = 0;
    blanks--;
}

我一直在查看这个问题,并且知道rand()不是线程安全的。这是我得到的分段错误的原因,还是别的什么?

此外,有解决方法吗? (对我来说,得到一组没有这种分段错误的随机数)

1 个答案:

答案 0 :(得分:6)

根据您的要求

  

(数组大小为9x9)

您的数组索引应该最高 8C数组具有基于0的索引。

更改

i = rand() % 10;
j = rand() % 10;

i = rand() % 9;
j = rand() % 9;