Java 加上最后的平均值

Java 加上最后的平均值,java,Java,我在添加循环的最后一个编号时遇到问题。我不知道如何将最后一个数字包括在内,然后将其添加到双变量中,然后将其除以平均值。我会使用我的IDE来解决这个问题,但输入必须是大约1000次试验才能准确。你可以清楚地看到,10次3.0或更高的试验并不等于大约2.8次。我只需要把缺失的试验加起来,然后算入平均值 代码: import java.util.*; 公共类计算器2 { 公共静态布尔ifitisInside(双xPosion,双yPosion) { 双距离=Math.sqrt((xPosion*

我在添加循环的最后一个编号时遇到问题。我不知道如何将最后一个数字包括在内,然后将其添加到双变量中,然后将其除以平均值。我会使用我的IDE来解决这个问题,但输入必须是大约1000次试验才能准确。你可以清楚地看到,10次3.0或更高的试验并不等于大约2.8次。我只需要把缺失的试验加起来,然后算入平均值

代码:

import java.util.*;
公共类计算器2
{ 
公共静态布尔ifitisInside(双xPosion,双yPosion)
{  
双距离=Math.sqrt((xPosion*xPosion)+(yPosion*yPosion));
返回(距离<1.0);
}
公共静态双计算器(整数)
{ 
Random randomGen=新的Random();
int hits=0;
双PI=0;
双α=0;
双平均=0;
对于(int m=0;m=0)
{
点击率=0;
PI=0;

对于(int i=0;i我认为您可以通过重新排列代码来解决这个问题:

public static double calculatePI (int numThrows)
{ 
    Random randomGen = new Random();    
    int hits = 0;
    double PI = 0;
    double Alpha=0;
    double average= 0;


    for( int m=0; m<10; m++)
    {

        for (int i = 0; i <= numThrows; i++)
        { 
            double xPosion = (randomGen.nextDouble()) * 2 - 1.0;
            double yPosion = (randomGen.nextDouble()) * 2 - 1.0;
            if (ifitisInside(xPosion, yPosion))
            {
                hits++;
                double dthrows = numThrows;
                PI += (4.0 * (hits/dthrows)); // NOTE: += not =+
            }
        }

        Alpha+=PI;  // NOTE += not =+
        average= m/Alpha;
        if(m>=0)
        {
            hits=0;
            PI=0;
        }
        System.out.println("Trial["+m+"]: ="+ PI);

    }
}
应该是:

average=Alpha/m

只需将平均计算从内部循环中取出。此外,循环不变量是从0到Alpha=+PI;
相当确定的是
Alpha+=PI;
。更改它并检查它是否有效。@ValekHalfHeart不是它使平均值小于1。对不起,应该是
X
。我将重新发布我的日志评论,因为现在编辑已经太晚了。如果
M(n)
n
值的平均值,
X
是另一个要添加的值,那么
M(n+1)=(M(n)*n+X)/(n+1)
在您的精度范围内无法解决问题。我将继续讨论,并在2013年12月29日保留此问题
average=m/Alpha;
average=Alpha/m
double sumPiOverMTrials = 0;
for( int m=0; m<10; m++)
{
  double hits = 0;
  for (int i = 0; i < numThrows; i++) { 
    double xPosition = (randomGen.nextDouble()) * 2 - 1.0;
    double yPosition = (randomGen.nextDouble()) * 2 - 1.0;
    if (ifitisInside(xPosition, yPosition))
    {
      hits++;
    }
  }
  double pi = 4.0 * hits/numthrows;
  System.out.println("Trial["+m+"]: ="+ pi);
  sumPiOverMTrials += pi;
}
System.out.println("Average over "+m+" trials ="+ sumPiOverMTrials/10);