2016-03-10 49 views
2

我碰到了一個方法,在C#中如何保存價值

這裏與Random.Next()方法產生不同的值是代碼:

private static readonly Random random = new Random(); 
private static readonly object syncLock = new object(); 
public static int RandomNumber(int min, int max) 
{ 
    lock(syncLock) { // synchronize 
     return random.Next(min, max); 
    } 
} 

我的問題是我怎麼能保存每個值的每次創建新實例並使用它們爲每個對象分別

//Creating new instance in the Main class 
public class ChainStore 
{ 
    public static void Main() 
    { 
     var purchaseDetails = new PurchaseDetails(); 
    } 
} 

//how i call it in the constructor (using the RandomNumber method from above) 

public class PurchaseDetails 
{ 
    public PurchaseDetails() 
    { 
     this.CardID = RandomNumber(1000, 9999); 
    } 
} 

所以現在,例如,如果我想創建

var purchaseDetails2 = new PurchaseDetails(); 

並重新運行程序(與F5/Ctrl + F5),我想從我第一次運行該程序使用同一個隨機生成的值。換句話說,我希望Card.ID具有相同的值,而不是一個新的隨機生成的值;

是否必須將所有值保存在ListArray? 如果是我該怎麼辦呢?提前致謝!

回答

3

我想從我第一次運行該程序使用同一個隨機生成的值。

您在內部使用的Random()的重載會爲僞隨機數生成算法生成一個種子。

要得到相同的結果每次運行,提供您所選擇的種子與alternate constructor

private static readonly Random random = new Random(42); 

只要你的程序在一個確定的順序,否則運行時,你會得到相同的「隨機」的數字(如果例如它使用多個線程或流改變基於用戶輸入),它不會是確定性的。