在 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)
你的数组索引应该 运行 到 8
。 C
数组具有基于 0
的索引。
改变
i = rand() % 10;
j = rand() % 10;
到
i = rand() % 9;
j = rand() % 9;
我正在编写一个程序,我需要将二维数组(板)的多个元素(由 blanks 变量指定)设置为 0。(数组大小为 9x9)必须拾取这些位置随机地,一旦我使用以下代码段来执行此操作,程序在某些情况下会出现分段错误,并且不会将所需的位置数设置为 0。
i = rand() % 10;
j = rand() % 10;
if (board[i][j]){
board[i][j] = 0;
blanks--;
}
我一直在查找这个问题位,后来知道 rand()
不是线程安全的。这是我遇到分段错误的原因,还是其他原因?
此外,是否有解决此问题的方法? (对我来说得到一组没有这个分段错误的随机数)
根据您的要求
(array size is 9x9)
你的数组索引应该 运行 到 8
。 C
数组具有基于 0
的索引。
改变
i = rand() % 10;
j = rand() % 10;
到
i = rand() % 9;
j = rand() % 9;