package probably; public class Probably { public static double [] make(int m){ double [] bubble = new double[m]; for(int i = 0; i < bubble.length; i++){ bubble[i] = Math.random(); } // for return bubble; } // make( int ) public static void print(double [] things){ for(int i = 0; i < things.length; i++){ System.out.println(things[i]); } // for } // print( double [] ) public static double sum(double [] oranges ){ double total = 0; for(int i = 0; i < oranges.length; i++){ total = total + oranges[i]; } // for return total; } // sum( double [] ) public static double [] pdf( double [] numbers ) { double [] result = new double[ numbers.length ]; double s = sum( numbers ); for( int i = 0; i < result.length; i++ ) { result[i] = numbers[i]/s; } // for return result; } // pdf( double [] ) public static int posOfFirstGreater( double [] data, double r ) { int index = 0; //System.out.println( "\t " + r + " <? data[" + // index + "] = " + data[index] ); while( index < data.length && r > data[index] ) { //System.out.println( "\t " + r + " <? data[" + // index + "] = " + data[index] ); index++; } // while //System.out.println(); return index; } // posOfFirstGreater( double [], double ) public static double [] pdf2cdf( double [] p ) { double [] result = new double[ p.length ]; result[0] = p[0]; for( int i = 1; i < result.length; i++ ) { result[i] = p[i] + result[i-1]; } // for return result; } // pdf2cdf( double [] ) public static void main(String[] cheese) { //System.out.println("hello"); double [] trouble = make (10); //print(trouble); //System.out.println(); double [] stuff = {1, 2, 3}; //System.out.println(sum(stuff)); //System.out.println(); double [] dist = pdf( stuff ); //print( dist ); //System.out.println(); //print( pdf2cdf( dist ) ); double [] cdf = pdf2cdf( dist ); int [] outcomes = new int[ cdf.length ]; for( int i = 0; i < outcomes.length; i++ ) { outcomes[i] = 0; } // for for( int i = 0; i < 1000000; i++ ) { double r = Math.random(); int event = posOfFirstGreater( cdf, r ); outcomes[event]++; } // for System.out.println( "# of event 0 = " + outcomes[0] ); System.out.println( "# of event 1 = " + outcomes[1] ); System.out.println( "# of event 2 = " + outcomes[2] ); } // main( String [] ) } // Probably