(C#)如何从随机数生成器中提取数字,并在消息框中输出最高和最低数字
本文关键字:数字 输出 消息 随机数生成器 提取 | 更新日期: 2023-09-27 18:21:38
我有一个随机数生成器,对于赋值,我们必须获取随机数,并在最高和最低数字的消息框中进行输出。我想我需要以某种方式使用if/else,但我有点困惑。我的代码现在看起来像:
class Program
{
static void Main(string[] args)
{
Random random = new Random();
int randomNumber;
for (int i = 0; i < 11; i++)
{
randomNumber = random.Next(1000);
Console.WriteLine(randomNumber);
}
}
}
如果将所有数字放在集合中,则可以使用LINQ to Objects扩展方法Min
和Max
Random random = new Random();
List<int> randos = new List<int>();
for (int i = 0; i < 11; i++)
{
randos.Add(random.Next(1000));
}
int min = randos.Min();
int max = randos.Max();
Console.WriteLine("The minimum value is " + min);
Console.WriteLine("The maximum value is " + max);
因为在生成完整列表之前无法获得最小值或最大值,所以该代码需要在for循环之外,并且需要将所有随机值放在集合中,以便它们持久存在。我认为你的问题在于,当你必须首先拥有一个完整的集合时,试图以流媒体的方式完成这一切。
此外,如果你想弹出一个消息框,那么在Visual Studio中创建项目时,你可能应该创建一个Windows窗体应用程序,而不是控制台应用程序。如果您使用的是winforms,您可以只执行MessageBox.Show("My message here")
,但如果您已经构建了控制台应用程序,则必须包含一组程序集才能使其工作。
如果你只关心一系列数字的最小值和最大值,而不存储它们中的每一个,你只需要保留两个变量的当前最大值和最小值,并随着循环的进行更新它们。在最后一次迭代后,您将获得整个批次的最大值和最小值:
static void Main(string[] args)
{
Random random = new Random();
int maxNumber;
int minNumber;
maxNumber = minNumber = random.Next(1000); // Assign both variables at once
for (int i = 0; i < 11; i++)
{
int randomNumber = random.Next(1000);
Console.WriteLine(randomNumber);
if (randomNumber > maxNumber) maxNumber = randomNumber;
if (randomNumber < minNumber) minNumber = randomNumber;
}
Console.WriteLine("Maximum: {0}", maxNumber);
Console.WriteLine("Minimum: {0}", minNumber);
Console.ReadKey(true);
}
要在控制台应用程序中显示消息框,您需要设置对System.Windows.Forms的引用,并在正确的using语句之后:
Random random = new Random();
List<int> randomNumbers = new List<int>();
for (int i = 0; i < 11; i++)
{
randomNumbers.Add(random.Next(100000));//or set to your desired value
}
//Console.WriteLine("Biggest number is {0} -smallest is {1}", randomNumbers.Max(), randomNumbers.Min());
MessageBox.Show("Biggest number is " + randomNumbers.Max().ToString() + "- smallest is " + randomNumbers.Min().ToString() );
另一种方法是使用Linq的Aggregate
方法:
var random = new Random();
var limits =
Enumerable.Range(0, 11)
.Select(x => random.Next(1000))
.Aggregate(new { min = int.MaxValue, max = int.MinValue },
(a, x) => new
{
min = Math.Min(a.min, x),
max = Math.Max(a.max, x)
});
MessageBox.Show(string.Format("Min: {0}, Max: {1}", limits.min, limits.max));
您只需要收集所有随机数,就可以从中选择最小值和最大值。您也在使用控制台应用程序和可能在Windows窗体中使用的MessageBox
,但如果您想在控制台应用程序中使用它,您需要导入using System.Windows.Forms;
库才能使用它,只需选择:
Project->Add Reference
从左侧选择
FrameWork
然后选择
System.Windows.Forms
然后在代码的开头写:
using System.Windows.Forms;
最后点击
OK
然后你的代码在主:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace MyProgram
{
class Program
{
static void Main(string[] args)
{
Random random = new Random();
List<int> randomNumbers= new List<int>();
for (int i = 0; i < 11; i++)
{
randomNumbers.Add(random.Next(1000));
}
MessageBox.Show(string.Format("The minimum is: {0}'nThe maximum is: {1}", randomNumbers.Min(), randomNumbers.Max()), "Result");
}
}
}