c c 隨機數產生相同解決方案

2021-08-22 09:10:15 字數 529 閱讀 2426

謹記srand()不要呼叫兩次或兩次以上。。

void main()

{ for(int i=0;i<10;i++)

{ srand( (unsigned)time( null ) );

cout《這樣呼叫的時候,因為cpu高速的關係,呼叫的srand( (unsigned)time( null ) );生成的種子數一樣。導致rand()產生的隨機數也一樣。

改為:void main()

{ srand( (unsigned)time( null ) );

for(int i=0;i<10;i++)

{cout《有時候這些錯誤很隱蔽,在建構函式中做了乙個check方法。在check方法中呼叫init方法,然後在init方法中產生隨機數。注意如果srand( (unsigned)time( null ) );被寫進了check()或者init()等方法中,一定要保證該方法在構造的時候只被呼叫一次。最好是把該行**srand( (unsigned)time( null ) );寫到建構函式中進行初始化種子的操作。

Random快速連續產生相同隨機數

random類是乙個產生偽隨機數字的類,它的建構函式有兩種,乙個是直接new random 另外乙個是new random int32 前者是根據觸發那刻的系統時間做為種子,來產生乙個隨機數字,後者可以自己設定觸發的種子,一般都是用uncheck int datetime.now.ticks 做為引...

解決for迴圈裡面產生相同隨機數的問題

一般使用random ra new random 就可以。但是如果應用在乙個for迴圈中,取到的多個隨機值就基本相同了。原因如下 用系統時間做隨機種子並不保險,如果應用程式在乙個較快的計算機上執行,則該計算機的系統時鐘可能沒有時間在此建構函式的呼叫之間進行更改,random 的不同例項的種子值 可能...

Random快速連續產生相同隨機數的解決方案

random快速連續產生相同隨機數的解決方案 第一種方式 使用datetime.now.ticks生成隨機數 優缺點 如果觸發random函式間隔時間很短,就有可能造成產生一樣的隨機數 第二種方式 使用thread.sleep 在每次迴圈產生隨機數前延遲幾個毫秒,防止由於計算機運算速度過快,產生偽隨...