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

        在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之間的隨機數。

代碼如下:

得到的結果爲:

以下是我參考的別人的代碼:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章