可能重复:
针对相同版本的 .NET 框架的随机数种子
如果我的应用程序以 .NET 框架 3.5 为目标,每个 CPU 是否会基于相同的种子返回相同的随机序列?我想知道你是否得到和我一样的结果。我也希望我分发我的应用程序的每个人也能得到相同的结果。谢谢!
Random a = new Random(44448);
int i1 = a.Next(65, 90);
MessageBox.Show(i1.ToString());
可能重复:
针对相同版本的 .NET 框架的随机数种子
如果我的应用程序以 .NET 框架 3.5 为目标,每个 CPU 是否会基于相同的种子返回相同的随机序列?我想知道你是否得到和我一样的结果。我也希望我分发我的应用程序的每个人也能得到相同的结果。谢谢!
Random a = new Random(44448);
int i1 = a.Next(65, 90);
MessageBox.Show(i1.ToString());
是的,如果你有相同的种子,你每次都会以相同的顺序获得相同的随机数。这是设计使然。您何时想要执行此操作的示例:
默认情况下(即当您不指定种子时)将使用系统时间。这里的一般想法是,你取一个“随机”数字,使用它,你可以制作更多的“随机”数字。如果您将当前时间降低到非常非常小的精度水平,那么它实际上是随机的。大多数情况下,这种默认行为对您来说是可以接受的,只要您确保不要创建Random
太靠近的新实例(这样它们就没有相同的种子)。您还可以通过更安全的算法生成一个随机数,并将其作为种子传递。(我见过人们做的一个例子是创建一个新的 GUID 并将其作为种子传递。这实际上是一个不错的想法。)