数组方法随机数显示

时间:2014-04-08 17:03:31

标签: c# arrays forms methods random

所以我试图创建一个调用方法的数组,将100个数字从-100到100随机化 并显示平均负数。我一直盯着它,我无法找到错误或解决方案也许我累了,但如果有人能帮助我,我会非常感激。

    private void button1_Click(object sender, EventArgs e)
    {
        int[] P = new int[100];
        Random rand = new Random();
        float enAvg = AvgNeg(P);
        textBox1.Text = (enAvg).ToString("");
    }

    static float AvgNeg(int[] array)
    {
        float sum = 0;
        int counter = 0;
        for (int i = 0; i < array.Length; i++)
        {
            if (array[i] < 0)
            {
                sum += array[i];
                counter++;
            }
        }
        float avg = sum / counter;
        return avg;
    }

2 个答案:

答案 0 :(得分:1)

您可以分三行进行:

        Random r = new Random();
        int[] num = Enumerable.Range(0, 100).Select(x => r.Next(-100, 101)).ToArray();
        double avg = num.Where(n => n < 0).Average();

答案 1 :(得分:0)

问题是因为您的所有值都为零(0),因此,您的counter变量为零(0)。 你不能除以零。所以avg的浮点值是NaN。

以值1开始counter

 int counter = 1;

或在除法之前验证计数器是否为零:

if(counter == 0)
    return 0;
else
 {   
    float avg = sum / counter;
    return avg;
 }
相关问题