请问,这个随机生成器,怎么回事
List<string> list1 = new List<string>() { "张三", "李四", "小熊", "小利", "小老" };
Random r = new Random();
list1 = list1.OrderBy(x => r.Next()).ToList();
Console.WriteLine(string.Join(",", list1));
Console.ReadKey();
我的问题:
r.Next()随机生成一个数字,list1按照这个数字重新排序
可是,如果删除Random r = new Random();直接写成:list1 = list1.OrderBy(x => new Random().Next()).ToList();
为什么不能重新排序了?
[解决办法]
你修改了以后,变成生成5个Random对象,而每个对象的初始种子是和时间相关的,程序执行很快,你的种子也一样了,所以产生的随机数也一样。
总之,不要在循环遍历里new Random。
[解决办法]
list1 = list1.OrderBy(x => new Random().Next()).ToList();
你这个是每次new一个,排序规则未知
[解决办法]
你的排序规则是什么啊
[解决办法]
那个是伪随机,没听说过吗?虽然每次Next()之后都能得到一个随机数,但是随机是有规律的,因此你new一个新的出来,取第一个随机数将得到相同的数,那样排序自然是不行的。
[解决办法]