//NormalPoints.java //2D Gaussian distribution normal distribution around center of applet area as mean import java.awt.*; import javax.swing.*; public class NormalPoints extends JApplet { int points, circles; double variance; String pointsOrCircles; public void init() { String input; pointsOrCircles = JOptionPane.showInputDialog( "Points (p) or circles (c)?"); if (pointsOrCircles.equalsIgnoreCase("p")) { input = JOptionPane.showInputDialog( "Enter number of points" ); points = Integer.parseInt(input); } else { input = JOptionPane.showInputDialog( "Enter number of circles" ); circles = Integer.parseInt(input); } input = JOptionPane.showInputDialog( "Enter standard deviation" ); variance = Double.parseDouble(input); } public void paint (Graphics g) { int x, y=0, length; double angle; int midw=getWidth()/2; //mean X int midh=getHeight()/2; //mean Y int sd1=0, sd2=0, sd3=0; if (pointsOrCircles.equalsIgnoreCase("p")) { for (int i=1; i<=points; i++) { //x = (int)(midw + ((2*(Math.random()+Math.random()+Math.random())-3) * variance)); length = Math.abs((int)((2*(Math.random()+Math.random()+Math.random())-3) * variance)); angle = Math.random() * 2 * Math.PI; //radians x = (int)(Math.cos(angle) * length + midw); y = (int)(Math.sin(angle) * length + midh); if (length<=variance) { sd1++; //y = midh + (int)((2*Math.random()-1) * variance); } else if (length<=2*variance) { sd2++; //y = midh + (int)((4*Math.random()-2) * 2*variance); } else if (length<=3*variance) { sd3++; //y = midh + (int)((6*Math.random()-4) * 3*variance); } //y = (int)(midh + ((2*(Math.random()+Math.random()+Math.random())-3) * variance)); g.drawLine(x,y, x,y); } g.setColor(Color.RED); int iSD = (int)variance; g.drawOval(midw-iSD,midh-iSD,2*iSD,2*iSD); g.drawOval(midw-iSD*2,midh-iSD*2,4*iSD,4*iSD); g.drawOval(midw-3*iSD,midh-3*iSD,6*iSD,6*iSD); showStatus("#<1S: "+sd1+" #<2S: "+(sd1+sd2)+" #<3S: "+(sd1+sd2+sd3)); } else { int[] A = new int[circles]; int sumX=0; for (int i=1; i<=circles; i++) { x = 2*Math.abs((int)(((2*(Math.random()+Math.random()+Math.random())-3) * variance))); A[i-1] = x; sumX += x; //y = (int)(midh + ((2*(Math.random()+Math.random()+Math.random())-3) * variance)); g.drawOval(midw-x/2,midh-x/2,x,x); } double sampleMean = (double)sumX/circles; double sumSqrdDiffs=0; for (int i=0; i