如何捕获 1000 个随机整数的最小值和最大值?
Posted
技术标签:
【中文标题】如何捕获 1000 个随机整数的最小值和最大值?【英文标题】:How do I capture the minimum and maximum for 1000 random integers? 【发布时间】:2019-08-17 05:05:34 【问题描述】:问题要求代码进行 1000 次迭代。它必须允许从 0 到 100000 的整数,并显示在迭代期间生成了多少奇数,然后显示生成的最大数字和最小数字。我的代码的第一部分有效并显示了生成了多少奇数,但是我无法弄清楚如何捕获/编辑代码运行时生成的最小和最大数字。
我尝试了许多不同的方法,包括 while 循环和我的 if、else if 条件。我已将它们放在我的程序中,但是我被卡住了。我知道问题在于 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");
这是我运行程序时的结果:
【问题讨论】:
你应该分配smallNum
和largeNum
而不是分配num
从 0 作为最小的数字开始可能也没有帮助。请在发布之前进行一些调试。
您已颠倒了smallNum
和largeNum
的分配。
整数类型有一个最大和最小可能值aa属性(你可以查一下)。如果您将初始最小值设置为整数类型的最大值(并将初始最大值设置为 int 类型最小值),然后观察调试器中发生的情况,您应该会看到这两个值的行为符合您的预期。顺便说一下,一种编程方法可以将随机数的生成与分析(最大值、最小值等)分开。这样您就可以针对一组已知数字测试分析部分,看看它是否有效
不是答案,也不是针对 OP,但是……伙计,这样的问题让我爱上了 LINQ。 Enumerable.Range(1,1000).Select(x => randNum.Next(1000)) - 后跟捕获 .Min、.Max 和 .Where(x => x % 2) 的变量。将 20 行代码替换为 3 行。
【参考方案1】:
行“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");
【讨论】:
smallNum还是有问题,这种情况下永远是0。 我可以通过设置 smallNum=100000 来绕过它,这将允许我的程序在每次程序发现较小的数字时进行更新【参考方案2】:许多人指出了代码本身的两个主要问题。
我想谈谈在您学习编程时如何处理此类问题。
看起来您在 Visual Studio 中,使用 C# 进行编程。好消息是,Visual Studio 让您在逐步执行程序时非常容易看到正在发生的事情。您可以在代码中设置断点,这样当程序到达该行时,它就会停止 - 突出显示该行并让您看到正在发生的事情。从那里,您可以向前推进代码行,观察值的变化。
这里有一些有用的开始:
Using breakpoints in Visual Studio Tips and tricks with the VS debugger Some more tips and tricks with debugging这将是难以置信向前发展的价值。因为,老实说,如果你发现自己在遇到任何问题时都不得不在网上发布问题,那么你就不会非常喜欢编程。能够找出障碍将使您的生活远更加愉快:-)
【讨论】:
以上是关于如何捕获 1000 个随机整数的最小值和最大值?的主要内容,如果未能解决你的问题,请参考以下文章
java程序,随机产生包含20个元素的数组,求出数组中的最大值,最小值和平均值