import java.lang.*; import java.io.*; import java.util.*; public class Canon2 { public static void main(String[] args){ Random rand = new Random(1); int counter = 0; double bestdistance = 0.0; double bestangle = 0.0; double bestspeed = 0.0; double angle = rand.nextDouble()*(Math.PI/2.0); double speed = rand.nextDouble()*(100); System.out.println("Target at 500m"); System.out.print("Angle, Speed, Distance"); System.out.println(", BestAngle, BestSpeed, BestDistance"); while(true){ counter++; double distance = (speed * speed * Math.sin( angle * 2.0 ))/9.8 ; System.out.print(angle+", "+speed+", "+distance); if(distance > 490 && distance < 510){ System.out.println(", "+angle+", "+speed+", "+distance); break; } if( Math.abs(500-distance) < Math.abs(500-bestdistance) ){ bestdistance=distance; bestangle=angle; bestspeed=speed; }else{ angle=bestangle; speed=bestspeed; } if(rand.nextDouble()<0.5){ angle = rand.nextDouble()*(Math.PI/2.0); }else{ speed = rand.nextDouble()*(100); } System.out.println(", "+bestangle+", "+bestspeed+", "+bestdistance); } System.out.println(counter+" turns to hit"); } }