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

我正在使用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”。


?? 我需要一些更一致的随机性...


慕盖茨4494581
浏览 444回答 3
3回答

摇曳的蔷薇

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

RISEBY

不要为Next创建包装方法。创建新的Random类实例会浪费循环。只需使用同一个!Random myRand = new Random();for(int i = 0; i < 10; i++){&nbsp; &nbsp; Console.WriteLine(myRand.Next(0, 10).ToString());}那应该给你十个随机值。如前所述-随机是伪随机的(就像所有实现一样),如果使用相同的种子创建100个实例,则将获得100个具有相同结果的实例。确保您正在重用该类。另外,正如人们所说的,要注意MinValue是包容性的,而MaxValue是排斥性的。对于您想要的内容,请执行myRand.Next(0,2)。
打开App,查看更多内容
随时随地看视频慕课网APP