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

时间:2019-03-26 17:57:31

标签: c# random max min

该问题要求代码进行1000次迭代,它必须允许0-100000的整数,并显示在迭代过程中生成了多少个奇数,然后显示生成的最高数字和最低数字。我的代码的第一部分工作并显示了生成了多少个奇数,但是我无法弄清楚如何捕获/编辑在代码运行时生成的最小和最大的数。

我尝试了许多不同的方法,包括while循环和条件条件。我已经将它们放置在我的程序中,但是我被卡住了。我知道问题在于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");
        }
    }
}

这是我运行程序时的结果:

enter image description here

2 个答案:

答案 0 :(得分:2)

“ 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");
    }
}
}

答案 1 :(得分:1)

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

在您学习编程时,我想谈一谈如何解决这样的问题。

好像您在Visual Studio中,使用C#编程。好吧,好消息是,Visual Studio使得您在逐步执行程序时可以很容易地看到正在发生的事情。您可以在代码中设置一个断点,以便当程序到达该行时,它会停止-高亮显示该行并让您查看发生了什么。从那里,您可以前进代码行,观察值的变化。

以下是一些有用的入门指南:

这将是不可思议的今后的价值。因为,老实说,如果您发现每次遇到任何障碍时都必须在线发布问题,就不会非常喜欢编程。能够找出障碍,将使您的生活更愉快:-)