每次应用程序运行时,随机类C#打印值相同

时间:2017-05-25 15:02:13

标签: c# random

我希望每次应用程序运行时使用Random类获取随机值,只有在我更改种子值或初始化随机类时才会有所不同。

我将Random random = new Random();声明为全局参数。

然后我打印3个随机双打:

for (int i = 0; i < 3; i++) 
 Console.WriteLine(random.NextDouble())

每次应用程序运行时,我都会得到不同的值

例如我第一次运行应用程序时获得了值 0.454,0.256,0.100

第二次 0.578,0.123,0.001

但我想要的是,每次应用程序运行时我都会得到相同的数字

例如我第一次运行app我得到了 0.454,0.256,0.100 第二次 0.454,0.256,0.100

3 个答案:

答案 0 :(得分:7)

为随机构造函数提供种子,例如1,尽管它可以是任何数字:

Random random = new Random(1);

现在,每次你获得相同的数字,所以它不会是随机的。如果您不提供,默认情况下会将当前时间戳作为种子,因此您可以通过控制种子来控制值。

这是一个完整的解决方案:

static void Main(string[] args)
        {
            Random random = new Random(1);


            for (int i = 0; i < 3; i++)
                Console.WriteLine(random.NextDouble());

            Console.Read();
        }

输出:

0.248668584157093
0.110743977181029
0.467010679872246

答案 1 :(得分:3)

您可以在Random constructor中选择一个硬编码的种子。

初始化Random课程时,请执行类似

的操作
var random = new Random(0);

种子是Random的初始状态。默认情况下,它取决于系统时钟,因此每次在应用程序运行中初始化它时,它都会获得一个新的种子并具有不同的行为。通过选择静态种子,它将表现相同。

答案 2 :(得分:2)

初始化Random类时。为构造函数提供相同的种子。

示例:

Random random = new Random(0);

每次运行程序时,这将为您提供相同的值。

这是因为默认构造函数提供了一个从系统时钟派生并具有有限分辨率的种子值。