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

segmentation fault while generating a number of random numbers using rand() in C

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

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

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

我一直在查找这个问题位,后来知道 rand() 不是线程安全的。这是我遇到分段错误的原因,还是其他原因?

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

根据您的要求

(array size is 9x9)

你的数组索引应该 运行 8C 数组具有基于 0 的索引。

改变

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

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