2013-04-27 22 views
-2

首先,我知道如何找到平均的權利。所以現在我的程序描述是 - 我使用方法名稱nextGaussian來獲得正態分佈的數字,這種方法工作正常。我還使用CONSOLE屏幕檢查正態分佈的數字曲線。當我試圖找到平均值(平均)值後,它給我的錯誤,如何找到無極分佈數的平均值?

1.對於例如,假設我們有五個號碼(30,50,60,70,80)

  • 第一我需要找到它們的總數,然後把它們除以5,但是在我的程序中,它取最後一個數字,將這個數字除以5,表示它取80,並將這個數字除以5

2.如果你想要任何額外的信息,請留下評論,我會這樣做...

import javax.swing.*; 

import java.awt.*; 
import java.awt.event.*; 
import java.text.NumberFormat; 
import java.util.Arrays; 
import java.util.Random;; 
public class NormalNumberProblem extends JFrame 
{ 
    static JTextField a = new JTextField(); 
    static JButton x = new JButton(); 

    public static void main(String args[]) 
    { 
    // construct frame 
    new NormalNumberProblem().show(); 
    } 
    public NormalNumberProblem() 
    { 
    // frame constructor 
    setTitle("NormalNumberProblem"); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    getContentPane().setLayout(new GridBagLayout()); 

    GridBagConstraints gridConstraints = new GridBagConstraints(); 
    a.setText(""); 
    a.setColumns(15); 
    gridConstraints.gridx = 0; 
    gridConstraints.gridy = 1; 
    getContentPane().add(a, gridConstraints); 

    x.setText("Random Numbers"); 
    gridConstraints.gridx =0; 
    gridConstraints.gridy =3; 
    getContentPane().add(x, gridConstraints); 
    x.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
       { 
       Random r = new Random(); 
       double[] list = new double[15]; 
       double mean = 10, std = 50; 

       for(int i = 0; i<list.length; i++) 
       { 
        double sum = 0;; 
        list[i] = r.nextGaussian() * 10 + 50; 

        sum += sum + list[i]; 
        System.out.println(sum); 
        double average = sum/list.length; 
        a.setText(" The mean is " + NumberFormat.getNumberInstance().format(average)); 
       } 
     } 

     }); 

    pack(); 
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    setBounds((int) (0.5 * (screenSize.width - getWidth())), (int) (0.5 * (screenSize.height - getHeight())), getWidth(), getHeight()); 
    } 


} 

感謝....

回答

2

您需要將一些元素圈外的(否則你重新定義你的sum每一次迭代,並在年底這是剛剛過去的數):

double sum = 0; 
double average = 0; 

for(int i = 0; i < list.length; i++) 
       { 
        list[i] = r.nextGaussian() * 10 + 50; 
        sum = sum + list[i]; 
        System.out.println(sum); 
       } 

average = sum/list.length; 
a.setText(" The mean is " + NumberFormat.getNumberInstance().format(average)); 
+0

Thankew ...它現在正常工作... – CRazyProgrammer 2013-04-27 06:12:41

+0

@CRazyProgrammer:不,它不。它不能解決我在答案中指出(並修復)的第二個錯誤。 – NPE 2013-04-27 06:19:11

+0

哪一個「正態分佈數值」 – CRazyProgrammer 2013-04-27 06:20:24

2

您需要更改的循環如下:

  double sum = 0; 
      for(int i = 0; i<list.length; i++) 
      { 
       list[i] = r.nextGaussian() * 10 + 50; 
       sum += list[i]; 
       System.out.println(sum); 
      } 
      double average = sum/list.length; 
      a.setText(" The mean is " + NumberFormat.getNumberInstance().format(average)); 

在這裏,我已經搬到sumaverage退出循環,並在sum += sum + list[i]已經修正了一個錯誤(你不需要+=sum +)。

+0

是的,它的工作,thankew – CRazyProgrammer 2013-04-27 06:13:42