C 短時間內產生不大量重複的隨機數

2021-05-25 05:37:06 字數 563 閱讀 1118

在c#程式設計中,經常會碰到產生隨機數的情況,並且是在短時間內產生一組隨機數。如果這組隨機數中有大量重複的,則達不到我們的要求。生成隨機數可以用偽隨機數發生器random,受種子控制生成偽隨機數,預設以當前時間值為種子。如果程式執行的很快,就會導致在幾乎同一時刻執行多次,肯定會有重複的。比如我們要生成1到10之間的5個隨機數,則經常會產生 2 2 1 1 1這樣的情況,那麼如何得到非常隨機的不那麼重複的隨機數呢?比如 4 2 3 3 5這樣的。

有人說用thread.sleep(5) ,但我不推薦,因為這樣會使系統減緩執行。

我採取的方法是:用種子guid.newguid().gethashcode(),在短時間裡不會出現大量重複。

以下**中,得到的是1到20之間的10個隨機數(不包括20)。陣列a、b、c分別採用不同的方法產生隨機數,陣列a和b均呼叫了方法randbit,不同的是陣列a多傳了乙個引數i改變隨機數的種子,陣列b用的方法是我在程式設計中經常用到的,即通過呼叫乙個方法來產生隨機數,非常方便。陣列c採用的方法也可以,但在實際程式設計中很少用到。陣列d類似於陣列c,只是產生的是0,1之間的隨機數。

**如下:

得到的結果為:

C 短時間內產生不大量重複的隨機數

在c 程式設計中,經常會碰到產生隨機數的情況,並且是在短時間內產生一組隨機數。如果這組隨機數中有大量重複的,則達不到我們的要求。生成隨機數可以用偽隨機數發生器random,受種子控制生成偽隨機數,預設以當前時間值為種子。如果程式執行的很快,就會導致在幾乎同一時刻執行多次,肯定會有重複的。比如我們要生...

C 短時間內產生大量不重複的隨機數

生成隨機數可以用偽隨機數發生器rand程式設計客棧om,受種子控制生成偽隨機數,預設以當前時間值為種子。如果程式執行的很快,就會導致在幾乎同一時刻執行多次,肯定會有重複的。比如我們要生成1到10之間的5個隨機程式設計客棧數,則經常會產生 2 2 1 1 1這樣的情程式設計客棧況,那麼如何得到非常隨機...

socket短時間內重連需注意的問題

socket短時間內重連需注意的問題 設定好監聽socket後,將socket的屬性設定為可重複使用位址,如 建立監聽socket socketlisten new socket addressfamily.internetwork,sockettype.stream,protocoltype.tc...