//RandomWalk2.java import java.awt.Graphics; import java.awt.Color; import javax.swing.*; public class RandomWalk2 extends JApplet { int lines; public void init() { String input; input = JOptionPane.showInputDialog("Enter # of steps to take"); lines = Integer.parseInt(input); } public void paint( Graphics g ) { int x1, y1, x2, y2, x, y; int xCenter=400; int yCenter=300; double totalDist=0, avgDist=0, dist; int scale=10; super.paint( g ); //assumes screen area is 800x600 x1 = x2 = xCenter; //start in center y1 = y2 = yCenter; g.setColor(Color.RED); g.fillRect(x1-3,y1-3,5,5); g.setColor(Color.BLACK); for (int i=1; i<=lines; i++) { /* switch ((int)(Math.random()*4)) { case 0: //up y2 = y1 - scale; break; case 1: //down y2 = y1 + scale; break; case 2: //left x2 = x1 - scale; break; case 3: //left x2 = x1 + scale; break; } */ double alpha; alpha = Math.random() * 360; //is this rounding OK. without it wlak is always to upper left... x2 = (int)(Math.round(Math.cos(alpha*Math.PI/180) * scale) + x1); y2 = (int)(Math.round(Math.sin(alpha*Math.PI/180) * scale) + y1); g.drawLine(x1,y1,x2,y2); x1 = x2; y1 = y2; x = (x2 - xCenter) / scale; y = (y2 - yCenter) / scale; dist = Math.sqrt(x*x+y*y); totalDist += dist; avgDist = totalDist / i; showStatus("distance from origin: " + dist + " Average distance: " + avgDist); } } }