C# 代码仅在使用调试器时有效?

标签 c# random

<分区>

这是我一直在使用的代码。它只是一个简单的程序,用于测试 3 个随机生成的数字是按升序还是降序排列。出于某种原因,如果我使用调试器并进入每一行,那么代码将正常工作。如果不是,则表示数字 100% 有序或 100% 乱序,但事实并非如此。

这是我一直在使用的代码:

        int num1;
        int num2;
        int num3;

        int yes = 0;
        int no = 0;

        for (int i = 0; i <= 99; i++)
        {

            Random rnd = new Random();

            num1 = rnd.Next(1, 11);
            num2 = rnd.Next(1, 11);
            num3 = rnd.Next(1, 11);

            if ( ((num1 <= num2) && (num2 <= num3)) || ((num1 >= num2) && (num2 >= num3)) )
            {
                yes += 1;
            }

            else
            {
                no += 1;
            }

        }


        Console.WriteLine("The Number are in ascending order " + yes.ToString() + " Times");
        Console.WriteLine("The Number are not in ascending order " + no.ToString() + " Times");

        Console.ReadLine();

我认为这可能是伪随机数和代码每次都生成相同的 3 个数字的问题,但我仍在学习更多有关编程的知识,我们将不胜感激。

最佳答案

new Random() 构造函数使用当前时间作为种子。

除非您在调试器中等待,否则您所有的 Random 实例都具有相同的种子。

您应该使用单个实例。

关于C# 代码仅在使用调试器时有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166472/

相关文章:

python - 循环回答 Python

java - -5 到 5 之间的随机数

random - 罗技游戏软件纯随机数的lua脚本代码

c# - Entity Framework : Skip few columns or select as null from related entities

c# - 如何解决 "Multiplicity is not valid in Role"错误?

c# - 如何限制从 Roslyn 脚本引擎访问程序集中的成员?

c# - 迭代未知的数据结构?

random - 在 Fortran 77 中生成给定范围内的随机数

c++ - C++ 中简单的类型驱动随机模型构造

c# - 复制一个 ObservableCollection 项