2017-10-19 69 views
-6

如果我創建一個Random(),每次有不同的起始種子時,生成器中的第一個數字每次都是唯一的,或者是否有第一個數字開始重複的點?C#隨機數唯一的第一個數

實施例:!

var random1 = new Random(1); 
var value1 = random1.Next(); 
var random2 = new Random(2); 
var value2 = random2.Next(); 
var random3 = new Random(x); 
var value3 = random3.Next(); 

其中值1 =值2 =值3;

編輯:固定變量名 我已經測試的0-80,000,000種子,如果他們是唯一一個從0 int.Max,或者如果第一個8000萬的意外獨特

+8

他們都可能是完全一樣的,這就是關於隨機 – EpicKip

+1

第一個數字點每次都會隨機出現這個名字。 –

+0

Random.Next生成一個隨機數,其值範圍從0到小於Int32.MaxValue。 –

回答

0

一般來說,我只是想知道,我不要認爲僞隨機生成器應該給出唯一的種子給出唯一的數字。

唯一想到的是,給定種子,生成器將始終生成相同的數字序列(通過多次調用下一個方法獲得),並且序列將在某個點重複。 但是,C#隨機類使用減法生成算法,其中基於序列的先前編號生成下一個隨機數。因此,數字和種子之間可能存在某種依賴關係,這使隨機數生成器每次種子改變時都會生成唯一的數字。

如果你想確保,無論是自己用的種子嘗試從int.MinValueint.MaxValue,或檢查C#執行此 https://referencesource.microsoft.com/#mscorlib/system/random.cs