如何保存Random.Next方法生成的值C#

时间:2016-03-10 05:39:47

标签: c# random save generated

我遇到了一种使用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);
     }
 }

我的问题是,每次使用它们创建新实例时如何保存每个值,并分别对每个对象使用它们

e.g

 //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中的所有值? 如果是,我该怎么做?提前谢谢!

1 个答案:

答案 0 :(得分:3)

  

我希望在第一次运行程序时使用相同的随机生成值。

您在内部使用的Random()的重载会为伪随机数生成算法生成种子。

要在每次运行中获得相同的结果,请使用alternate constructor

提供您选择的种子
private static readonly Random random = new Random(42);

只要您的程序以确定的顺序运行,您将获得相同的“随机”数字(例如,如果它使用多个线程或根据用户输入更改流量,则不会是确定性的。)