5.1节拓展训练二中随机抽取四张牌,random的用法质疑
发表在C#图书答疑
2018-12-12 悬赏:1 学分
《零基础学C#》第5 章 数组—批量数据处理 118页-118页
是否精华
是
否
版块置顶:
是
否
先说问题,相关代码请参下面复制部分:
运行原程序时会发现只有抽到的第一张牌和另外一张未抽取的牌会随机变化,其他牌均没有变化,也就说所有的牌并未能打乱。实际做了一个数组用来记录random每次循环时值的变化情况,发现52次循环均为同一值。这样的话
52次循环生成的随机数都是一样的,网上说是因为在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样所以会生成相同的随机数。那么我要是想生成不同的随机数是不是就不能用random了?
打乱牌的过程是两张牌数据交换的过程,那么如何保证52次循环里random不出现重复的值,这个程序里似乎保证不了这点。
// 随机打乱牌
//运行多次发现打乱的效果不行,2、3、4……张总是相同的牌
for (int i = 0; i < cardsnumber.Length; i++)
{
int random = new Random().Next(0,cardsnumber.Length);
list[i] = random;
int temp = cardsnumber[i];
cardsnumber[i] = cardsnumber[random];
cardsnumber[random] = temp;
}
首页上一页 1 下一页尾页 2 条记录 1/1页