为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的随机数生成器在C#中似乎不是随机的?

为什么我的随机数生成器在C#中似乎不是随机的?

C#
慕盖茨4494581 2019-12-06 10:11:20
我正在使用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 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

min = 0和max = 1的问题在于min是包含在内的,而max是排斥的。因此,该组合的唯一可能值为0。


查看完整回答
反对 回复 2019-12-06
?
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)。


查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 443 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信