C# 阵列法随机数显示
所以我尝试制作一个数组,调用一个方法,将100个数字从-100随机分配到100 并显示平均负数。我一直盯着它看,我找不到错误或解决办法,也许我累了,但如果有人能帮助我,我将非常感谢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
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?
)。但在这种情况下,因为它们只对负数求平均值(所以实际平均值必须是