import java.util.Random; public final class AIMath { public static Random rand=new Random(System.currentTimeMillis()); public static int getRandomInt(int max) { return (int)(getRandomFloat()*(max+1)); } public static final int chooseItem(float[] list) { float probs[]=normalize(list); float p=getRandomFloat(); int i; for (i=0;(iprobs[i]);i++) p-=probs[i]; if (i>=probs.length) i=probs.length-1; return i; } public static final int chooseItem(int[] list) { float probs[]=normalize(list); float p=getRandomFloat(); int i; for (i=0;(iprobs[i]);i++) p-=probs[i]; if (i>=probs.length) i=probs.length-1; return i; } public static final float[] normalize(float[] vec) { return scale(vec,1/summation(vec)); } public static final float[] normalize(int [] vec) { return scale(vec,1/(float)summation(vec)); } public static final float summation(float[] vec) { float sum=0; for (int i=0;imax) max=vec[i]; return max; } return 0; } public static int maximum(int[] vec) { if (vec.length!=0) { int max=vec[0]; for (int i=0;imax) max=vec[i]; return max; } return 0; } public static int indexOfMinimum(float[] vec) { float prev = vec[0]; int index = 0; for (int i=1; i vec[i]) { prev=vec[i]; index=i; } } return index; } public static int indexOfMaximum(int[] vec) { int prev = vec[0]; int index = 0; for (int i=1; i vec[i]) { prev=vec[i]; index=i; } } return index; } }