簡體   English   中英

分段錯誤,同時在C中使用rand()生成許多隨機數

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

我正在編寫一個程序,需要將2D數組(板)的元素數量(由blanks變量指定)設置為0。(數組大小為9x9)必須隨機提取這些位置,使用以下代碼段執行此操作,在某些情況下該程序最終會出現段錯誤,並且未將所需的位置數設置為0。

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

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

我一直在尋找這個問題,並發現rand()不是線程安全的。 是我遇到細分錯誤的原因,還是其他原因?

此外,是否有解決方法? (對我來說,這是一組隨機數,沒有這種分段錯誤)

根據您的要求

(數組大小為9x9)

您的數組索引應最多運行8 C數組具有基於0的索引。

更改

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

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

暫無
暫無

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

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