我正在使用Microsoft Visual C#2008 Express。我发现以下代码片段: public static int RandomNumber(int min, int max) { Random random = new Random(); return random.Next(min, max); }问题是我已经运行了100多次,并且当我的min = 0和max = 1时,总是给我相同的答案。我每次都得到0。(我创建了一个测试函数来运行它-确实-每次我都得到0)。我很难相信这是一个巧合...还有什么我可以做些检查或测试的吗?(我确实使用min = 0和max = 10并在前50ish次中重新运行测试,结果始终为“ 5”,在第二50ish次中,结果始终为“ 9”。?? 我需要一些更一致的随机性...
3 回答
RISEBY
TA贡献1856条经验 获得超5个赞
不要为Next创建包装方法。创建新的Random类实例会浪费循环。只需使用同一个!
Random myRand = new Random();
for(int i = 0; i < 10; i++)
{
Console.WriteLine(myRand.Next(0, 10).ToString());
}
那应该给你十个随机值。
如前所述-随机是伪随机的(就像所有实现一样),如果使用相同的种子创建100个实例,则将获得100个具有相同结果的实例。确保您正在重用该类。
另外,正如人们所说的,要注意MinValue是包容性的,而MaxValue是排斥性的。对于您想要的内容,请执行myRand.Next(0,2)。
- 3 回答
- 0 关注
- 466 浏览
添加回答
举报
0/150
提交
取消