C# 阵列法随机数显示

C# 阵列法随机数显示,c#,arrays,forms,methods,random,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 = AvgN

所以我尝试制作一个数组,调用一个方法,将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;
    }
private void按钮1\u单击(对象发送者,事件参数e)
{
int[]P=新的int[100];
Random rand=新的Random();
浮动激活=平均值(P);
textBox1.Text=(enAvg).ToString(“”);
}
静态浮点平均值(int[]数组)
{
浮点数和=0;
int计数器=0;
for(int i=0;i
问题是因为您的所有值都是零(0),因此,
计数器
变量是零(0)。 你不能被零除。因此,
avg
的浮点值为NaN

用值1启动
计数器

 int counter = 1;
或在除法前验证计数器是否为零:

if(counter == 0)
    return 0;
else
 {   
    float avg = sum / counter;
    return avg;
 }

您可以通过三行完成此操作:

        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();
Random r=new Random();
int[]num=Enumerable.Range(01100)。选择(x=>r.Next(-100101)).ToArray();
double avg=num.Where(n=>n<0.Average();

您收到了什么错误?我没有收到任何错误,但当我按下windows窗体上的按钮时,它只显示NAN或它应该表示的任何内容。您似乎没有实际生成任何随机数。你创建了一个数组,你创建了一个
随机
,但是你从来没有在数组中放入任何数字!你在哪里用随机数填充数组?我可能是瞎子,但我错过了那部分:D@MattBurland这就是他的规格说明所要做的。在1处启动计数器意味着结果总是错误的。计数器不是问题所在。问题是我数组中的所有数字都是0,它没有随机化数字,但我仍然修复了它,感谢你的帮助。@BoringGuy如果你不验证,可能所有的值都随机化为零!这个错误会出现:)在
1
启动计数器不是一个好主意。通常我认为,在没有要平均的数字的情况下,返回
0
也是错误的(最好在返回type并返回null时使用
float?
)。但在这种情况下,因为它们只对负数求平均值(所以实际平均值必须是