2013-04-27 3 views
-2

Прежде всего, я знаю, как найти среднее право. Итак, теперь мое описание программы - я использую имя метода nextGaussian, чтобы получить нормально распределенное число, этот метод работает нормально. Я также использовал CONSOLE SCREEN, чтобы проверить кривую нормально распределенного номера. После того, когда я пытаюсь найти значение среднего (в среднем), это дает мне ошибку,Как найти среднее значение распределенного числа норамлы?

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

+0

@CRazyProgrammer: Нет, это не так. Он не исправляет вторую ошибку, о которой я указал (и исправил) в своем ответе. – NPE

+0

, который «значения нормально распределенного номера» – CRazyProgrammer

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)); 

Здесь, я переехал sum и average из петли, и исправлена ​​ошибка в sum += sum + list[i] (вам не нужны как +=, так и sum +).

+0

да, его работал, thankew – CRazyProgrammer

Смежные вопросы