C# 如何获取1000个随机整数的最小值和最大值?

C# 如何获取1000个随机整数的最小值和最大值?,c#,random,max,min,C#,Random,Max,Min,该问题要求对代码进行1000次迭代。它必须考虑0-100000之间的整数,并显示迭代期间生成的奇数,然后显示生成的最高数和最低数。我的代码的第一部分工作并显示生成了多少个奇数,但是我不知道如何捕获/编辑代码运行时生成的最小和最大的数字 我尝试了许多不同的方法,包括while循环和if,elseif条件。我已经把他们通过我的程序,但我卡住了。我知道问题在于randNum进入变量并在每次迭代中保持不变而不返回零(当我运行代码时,smallNum和LargeNum显示为零) 这是我到目前为止的工作 u

该问题要求对代码进行1000次迭代。它必须考虑0-100000之间的整数,并显示迭代期间生成的奇数,然后显示生成的最高数和最低数。我的代码的第一部分工作并显示生成了多少个奇数,但是我不知道如何捕获/编辑代码运行时生成的最小和最大的数字

我尝试了许多不同的方法,包括while循环和if,elseif条件。我已经把他们通过我的程序,但我卡住了。我知道问题在于randNum进入变量并在每次迭代中保持不变而不返回零(当我运行代码时,smallNum和LargeNum显示为零)

这是我到目前为止的工作

using System;
using System.Windows.Forms;

namespace BissonnetteMessageBox

{
  class Program
    {
      static void Main(string[] args)

      {

        int oddNumCount = 0;
        int smallNum = 0;
        int largeNum = 0;
            Random randNum = new Random();


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

                int num = randNum.Next(100000);
                int remain = num % 2;

                if (remain != 0)
                {
                    oddNumCount++;


                }
                if (num < smallNum)
                {
                    num = smallNum;
                }
                else if (num > largeNum)
                {
                    num = largeNum;
                }

            }

            MessageBox.Show("the Number of odd numbers generated: " + oddNumCount +
                "\nSmallest number was: " + smallNum +
                "\nLargerst number was: "+ largeNum , "random number generation results");
        }
    }
}
使用系统;
使用System.Windows.Forms;
命名空间BissonnetteMessageBox
{
班级计划
{
静态void Main(字符串[]参数)
{
int-oddNumCount=0;
int smallNum=0;
int-largeNum=0;
Random randNum=新的Random();
对于(int i=0;i<1000;i++)
{
int num=randNum.Next(100000);
int剩余=num%2;
如果(保持!=0)
{
oddNumCount++;
}
if(numlargeNum)
{
num=largeNum;
}
}
Show(“生成的奇数的数量:”+oddNumCount+
\n最小的数字是:“+smallNum”+
“\n第一个数字是:“+largeNum”,随机数字生成结果”);
}
}
}
以下是我运行程序时的结果:

行“num=smallNum;”和“num=largeNum;”是错误的。它们应该是“smallNum=num;”和“largeNum=num;”。这是因为“=”右侧的变量(或常量、表达式)覆盖了左侧的变量。这不像数学,它可以被扭转。 以下是正确的代码:

using System;
using System.Windows.Forms;

namespace BissonnetteMessageBox

{
internal class Program
{
    private static void Main(string[] args)

    {

        int oddNumCount = 0;
        int smallNum = 0;
        int largeNum = 0;
        Random randNum = new Random();


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

            int num = randNum.Next(100000);
            int remain = num % 2;

            if (remain != 0)
            {
                oddNumCount++;
            }
            if (num < smallNum)
            {
                smallNum = num;
            }
            else if (num > largeNum)
            {
                largeNum = num;
            }

        }

        MessageBox.Show("the Number of odd numbers generated: " + oddNumCount +
            "\nSmallest number was: " + smallNum +
            "\nLargerst number was: " + largeNum, "random number generation results");
    }
}
}
使用系统;
使用System.Windows.Forms;
命名空间BissonnetteMessageBox
{
内部课程计划
{
私有静态void Main(字符串[]args)
{
int-oddNumCount=0;
int smallNum=0;
int-largeNum=0;
Random randNum=新的Random();
对于(int i=0;i<1000;i++)
{
int num=randNum.Next(100000);
int剩余=num%2;
如果(保持!=0)
{
oddNumCount++;
}
if(numlargeNum)
{
largeNum=num;
}
}
Show(“生成的奇数的数量:”+oddNumCount+
\n最小的数字是:“+smallNum”+
“\n第一个数字是:“+largeNum”,随机数字生成结果”);
}
}
}

许多人已经指出了代码本身的两个主要问题

我想在你们学习如何编程的过程中谈谈如何处理类似的问题

看起来你在Visual Studio中,用C语言编程。好吧,好消息是,VisualStudio使您在逐步完成程序时可以很容易地看到正在发生的事情。您可以在代码中设置一个断点,这样当程序到达该行时,它就会停止—突出显示该行并让您看到发生了什么。从那里,您可以向前推进代码行,观察值的变化

以下是一些有助于入门的地方:


这将是非常有价值的未来。因为,老实说,如果你发现自己在遇到任何问题时都不得不在网上发帖,你就不会很喜欢编程了。能够找出障碍将使你的生活更加愉快:-)

你应该分配
smallNum
largeNum
而不是分配
num
,从0开始作为最小的数字可能也没有帮助。请在此处发布之前进行一些调试。您已反转了
smallNum
largeNum
的赋值。整数类型具有最大和最小可能值aa属性(您可以查找它们)。如果将初始最小值设置为整数类型的最大值(&初始最大值设置为int类型的最小值),然后观察调试器中发生的情况,您应该会看到这两个值的行为与预期一致。顺便说一句,编程的一种方法是将随机数的生成与分析(max、min等)分开。这样,您就可以根据一组已知的数字来测试分析部分,看看它是否有效,不是答案还是OP,而是。。。伙计,像这样的问题让我爱上了林克。Enumerable.Range(11000)。选择(x=>randNum.Next(1000))-后跟捕获.Min、.Max和.Where的变量(x=>x%2)。将20行代码替换为3行。smallNum仍然存在问题,在这种情况下它将始终为0。我可以通过将smallNum设置为100000来绕过它。这将允许我的程序在每次发现较小的数字时更新