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

2021-08-29 17:55:07 字數 487 閱讀 7033

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

第一種方式:使用datetime.now.ticks生成隨機數; 

優缺點:如果觸發random函式間隔時間很短,就有可能造成產生一樣的隨機數 

第二種方式: 使用thread.sleep(),在每次迴圈產生隨機數前延遲幾個毫秒,防止由於計算機運算速度過快,產生偽隨機數; 

優缺點:生成速度慢,不適合快速生成大量隨機數 

第三種方式:使用rngcryptoserviceprovider生成seed;加密隨機數生成器生成random的seed種子 

缺點:生成速度較慢,但是好於第二種; 

優點:使用rngcryptoserviceprovider還可以生成隨機字串;

第四種方式:使用guid生成seed; 

優缺點:生成速度快,適合生成大量隨機數;

另外,生成隨機數 要在迴圈外new物件,然後迴圈內使用next即可。如果在迴圈內new,會出現相近隨機的機率較大。

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

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

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

謹記srand 不要呼叫兩次或兩次以上。void main for int i 0 i 10 i srand unsigned time null cout 這樣呼叫的時候,因為cpu高速的關係,呼叫的srand unsigned time null 生成的種子數一樣。導致rand 產生的隨機數也一...

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

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