1

可能重复:
针对相同版本的 .NET 框架的随机数种子

如果我的应用程序以 .NET 框架 3.5 为目标,每个 CPU 是否会基于相同的种子返回相同的随机序列?我想知道你是否得到和我一样的结果。我也希望我分发我的应用程序的每个人也能得到相同的结果。谢谢!

Random a = new Random(44448); 
int i1 = a.Next(65, 90); 
MessageBox.Show(i1.ToString()); 
4

1 回答 1

0

是的,如果你有相同的种子,你每次都会以相同的顺序获得相同的随机数。这是设计使然。您何时想要执行此操作的示例:

  • 在测试程序时,您可以使用固定种子,以便获得相同的结果。
  • 如果您记录程序中使用的种子并且遇到问题,那么您可以确定生成的随机数,以便尝试重现错误。
  • 如果您想衡量性能,您可以使用固定种子,这样您就不会在不同的运行中获得不同的数据。

默认情况下(即当您不指定种子时)将使用系统时间。这里的一般想法是,你取一个“随机”数字,使用它,你可以制作更多的“随机”数字。如果您将当前时间降低到非常非常小的精度水平,那么它实际上是随机的。大多数情况下,这种默认行为对您来说是可以接受的,只要您确保不要创建Random太靠近的新实例(这样它们就没有相同的种子)。您还可以通过更安全的算法生成一个随机数,并将其作为种子传递。(我见过人们做的一个例子是创建一个新的 GUID 并将其作为种子传递。这实际上是一个不错的想法。)

于 2012-07-23T19:49:14.570 回答