我让代码工作打印出1000个随机整数并找到最小值和最大值。我只能找到一个Java示例来查找这些数字的平均值。我不知道如何编辑它来为C#工作。
using System;
public class Test
{
public static void Main()
{
Random r = new Random();
int min = int.MaxValue,
max = int.MinValue;
for (int i = 1; i < 1001; i++){
int n = r.Next();
n = n + i;
Console.WriteLine(n);
if (n < min)
min = n;
if (n > max)
max = n;
for (n = 1 ; n <= 1001 ; x++)
{
sum += numbers [n];
average = sum / 1000;
}
}
Console.WriteLine("Min = {0}, Max = {1} Sum = {2}", min, max, sum);
}
}
答案 0 :(得分:3)
首先,创建一个序列:
public static IEnumerable<int> RandomIntegers(int count)
{
var random = new Random();
for (var i = 0; i < count; ++i)
yield return random.Next();
}
然后,使用LINQ:
var average = RandomIntegers(1000).Average();
如果您需要min / max / avg,请执行以下操作:
var intList = RandomIntegers(1000).ToList();
var min = intList.Min();
var max = intList.Max();
var avg = intList.Average();
您必须在此处调用ToList()
,以便为下次3次调用重复使用相同的序列。如果你没有这样做,你就要计算一个序列的最小值,另一个序列的最大值,以及另一个序列的平均值。
这种技术比 java方式更具可读性。
至于 oldschool 方式:
Random r = new Random();
int min = int.MaxValue,
max = int.MinValue;
long sum = 0;
const int count = 1000;
for (int i = 0; i < count; i++)
{
int n = r.Next();
sum += n;
if (n < min)
min = n;
if (n > max)
max = n;
}
double avg = (double)sum / count;
Console.WriteLine("Min = {0}, Max = {1}, Sum = {2}, Avg = {3}", min, max, sum, avg);
你必须在结束时计算一次平均值。