超过1个随机数序列c#,linq

mjs*_*jsr 0 c# linq random sequence

我正在使用此代码生成随机数字序列:

var sequence = Enumerable.Range(0, 9).OrderBy(n => n * n * (new Random()).Next());
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到我需要不止一个序列,在这段代码中我调用例程10次,结果是我的问题,所有序列都是相同的.

        int i = 0;
        while (i<10)
        {
            Console.Write("{0}:",i);
            var sequence = Enumerable.Range(0, 9).OrderBy(n => n * n * (new Random()).Next());
            sequence.ToList().ForEach(x=> Console.Write(x));
            i++;
            Console.WriteLine();
        }
Run Code Online (Sandbox Code Playgroud)

有人能给我一些实际生成不同序列的提示吗?希望使用LINQ

Jon*_*eet 5

问题是你Random在每次迭代时都在创建一个新实例.每个实例都将从当前时间获取其初始种子,与您的委托执行的频率相比,这种情况相对不频繁地发生变化.您可以创建单个实例Random并重复使用它.有关更多详细信息,请参阅我的随机性文章.

但是,我还建议您使用Fisher-Yates shuffle而不是OrderBy为了对值进行洗牌(Stack Overflow上有很多例子,比如这个)...虽然看起来你试图偏见随机性有点.如果你能提供更多的细节,以准确地你想要做什么,我们也许能帮助更多.