如何保存从 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 具有相同的值,而不是新的随机生成的值;
我必须将所有值保存在List
或Array
中吗?
如果是,我该怎么做?提前致谢!
【问题讨论】:
【参考方案1】:我想使用与第一次运行程序时相同的随机生成值。
您在内部使用的 Random() 重载会为伪随机数生成算法生成一个种子。
要每次运行都获得相同的结果,请使用 alternate constructor 提供您选择的种子
private static readonly Random random = new Random(42);
只要您的程序以确定性顺序运行,您将获得相同的“随机”数字(例如,如果它使用多个线程或根据用户输入更改流程,则它将不是确定性的)。
【讨论】:
以上是关于如何保存从 Random.Next 方法 C# 生成的值的主要内容,如果未能解决你的问题,请参考以下文章