C# 用Random 生成随机数的执行原理

首先以下代码执行:

        for (int i = 0; i < 32; i++)
        {
            Random rd = new Random();
            Console.Write(rd.Next().ToString());
        }
                    执行结果是都是想同的值,
                    ![图片说明](https://img-ask.csdn.net/upload/201905/14/1557816360_680668.jpg)
                    但是这样执行的话得到的就是不重复的:
                    Random rd = new Random();
                    for (int i = 0; i < 32; i++)
        {
            Console.Write(rd.Next().ToString());
        }
                    想知道这是什么机制?

Console.Write(rd.Next().ToString())里面加个换行符吧“\n”,方便看。你的第一个for循环输出的结果不是重
复的,你再试试。

Random rd = new Random()时无参数即为使用系统时钟为种子,
第一个循环无延时,在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样,就很有可能出现重复

生成10个0~99不重复的随机数

int[] nums = Enumerable.Range(0, 100).OrderBy(x => Guid.NewGuid().ToString()).Take(10).ToArray();