关于随机:如何在C#中随机化种子

How to randomize seed in C#

本问题已经有最佳答案,请猛点这里访问。

我需要在C中生成随机int。我用时钟时间来设置seend。但是,由于rnd.next()函数可能需要不到一毫秒的时间,因此如果必须生成一个整数列表,则此操作不起作用。

1
2
3
4
5
6
        for( int i=0; i<5; i++) {
            int max_val = 10; // max value
            var rnd = new Random(DateTime.Now.Millisecond);
            int randind = rnd.Next(0, max_val);
            Console.WriteLine(randind);
        }

输出:一五五五五

如何在不增加难看睡眠的情况下以干净的方式随机化种子?


在循环外部创建您的Random对象,不要提供seed参数——将为您选择一个。通过把它从循环中去掉,rnd.next()无论如何都会给你一个随机序列。

1
2
3
4
5
6
   var rnd = new Random();    
   for( int i=0; i<5; i++) {
        int max_val = 10; // max value
        int randind = rnd.Next(0, max_val);
        Console.WriteLine(randind);
    }


guid对象每次保证不同的结果。你可以这样做:

…新随机(guid.new guid().gethashcode())