Chciałbym napisać program generujący zadaną ilości liczb z rozkładu normalnego, używam algorytmu accept/reject (w zasadzie generuję liczby o rozkładzie wykładniczym a następnie decyduję o ich znaku, dzięki czemu dość wiernie przybliżam rozkład normalny).
Chciałbym zadeklarować tablicę (lub listę) i wykonywać kod w pętli while aż do zaakceptowania n liczb (pętla będzie musiała zrobić średnio jakieś 1.5*n przebiegów aby miec te n liczb). Jak to napisać?
Kod: Zaznacz cały
import javax.swing.*;
import java.util.*;
public class rnorm
{
public static void main(String[] args) throws Exception
{
String input = JOptionPane.showInputDialog("How many numbers to draw?");
int n = Integer.parseInt(input);
double x[]=new double[n];//?
int i = 0;
while ( )//?
{
double u = (double)Math.random();
double y = -Math.log(u);
if( Math.exp( - Math.pow(y-1,2) / 2 ) >= u){
double coin = (double)Math.random();
if (coin>0.5)
x[i]=y;
else
x[i]=-y;
i++;
}
}
for(int j=0;j<x.length;j++){
System.out.println(x[j]);
}
}
}