c語言 產生隨機數有時候會死迴圈

時間 2021-08-30 10:20:03

1樓:

我幫你看了下,是這樣的,當隨機生成的n與之前隨機儲存在result陣列中的數相同的時候,

flag被清除,將不執行if(flag) 裡面的語句,這時候,如果count還沒到達4,那麼就一直停留在

當前的數(比如等於2),那麼while迴圈就變成死迴圈。

修改後的源**如下(vc++ 6.0下編譯通過):

#include

#include

#include

main()

//add

else

//end add

}if(flag)

}getchar();

}希望對你有幫助。

2樓:

看的好累,終於看到**死迴圈了。

過程是這樣的,

result陣列沒有初始化,這裡面是隨機的值,不同的時刻可能是不同的值,無法預料。當第一次產生隨機數時,flag 是1,所以這時候,可以把值賦給result , 如果後面又產生乙個和前面一樣的隨機數,或者能在result中找到,這時候if( n== reult[j] )起作用了,flag就被置0, 進入死迴圈。

3樓:匿名使用者

死迴圈是因為每次產生的隨機數相同了導致你的計數器沒有增加,0-9十個數產生四個相同的概率還是比較大的(因為c語言產生的是偽隨機數),可以每次while迴圈都呼叫一次srand來減小相同的概率,或者遇到相同的數字就增加乙個值繼續判斷

c語言抽取隨機數怎麼編寫,C語言抽取隨機數怎麼編寫

珈藍惜夢 源程式 以及演算法解釋如下 產生1 10隨機數程式 include include using namespace std int main 定義隨機數儲存的陣列 srand unsigned time null 初始化隨機函式 number 0 rand n 第乙個隨機數無需比較 cou...

C語言中產生隨機數,C語言怎樣產生一定範圍的隨機數?

巧金蘭嵇嫣 樓上這樣得出的隨機值不準確,不信你執行幾次試試,都是同一個數。正確應該這樣。首先加標頭檔案 include include 然後在主函式裡面寫 inti srand time 0 i rand 100 1 printf d i 隨機數主要有兩個函式 一個種子產生函式 void srand...

如何產生隨機數,要求C 描述

include include srand unsigned int time null int n rand num就是以當前時間為種子 seed 的 偽 隨機數 srand time null printf d n rand 99 1 輸出乙個 1,99 區間內的整數 1 srand time ...