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

Posted

技术标签:

【中文标题】如何保存从 Random.Next 方法 C# 生成的值【英文标题】:How to save values generated from Random.Next method C# 【发布时间】:2016-03-10 05:39:47 【问题描述】:

我在 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 中吗? 如果是,我该怎么做?提前致谢!

【问题讨论】:

【参考方案1】:

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

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

要每次运行都获得相同的结果,请使用 alternate constructor 提供您选择的种子

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

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

【讨论】:

以上是关于如何保存从 Random.Next 方法 C# 生成的值的主要内容,如果未能解决你的问题,请参考以下文章

C# 随机3个数 怎么判断它们不相等

C#:如何将随机 int 值分配给变量?

C#中能得到随机数的函数是啥啊,怎么才能将随机输出的随机数赋给一个变量?

生成随机布尔值的最快方法

C#添加随机因子,获得随机数

用c#怎样从服务器下载文件,并保存为相应的类型