如何在C#中找到随机整数的平均值?

时间:2014-08-08 08:28:10

标签: c#

我让代码工作打印出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);
    }
}

1 个答案:

答案 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);

你必须在结束时计算一次平均值。