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

3

我发现了一种使用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具有相同的值而不是新的随机生成的值。

我需要将所有值保存在List或Array中吗?如果是,我该如何做?提前感谢您!

1个回答

4

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

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

为了每次运行获得相同的结果,请使用您选择的种子提供备用构造函数

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接