Advertisement
Guest User

Beanmachine

a guest
Jun 21st, 2014
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.61 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class BeanMachine {
  4.  
  5.     private static final int PEAK_HEIGHT = 50;
  6.     private static final char BAR_CHAR = '*';
  7.    
  8.     private Random rgen;
  9.     private int size, balls;
  10.     private int[] buckets;
  11.     private String format;
  12.    
  13.     public BeanMachine(int size) {
  14.         rgen = new Random();
  15.         this.size = size;
  16.         buckets = new int[size];
  17.         int numLen = (int) Math.ceil(Math.log10(size));
  18.         format = "Bucket%0" + numLen +"d: ";
  19.         reset();
  20.     }
  21.    
  22.     public void reset() {
  23.         for (int i = 0; i < size; i++) {
  24.             buckets[i] = 0;
  25.         }
  26.         balls = 0;
  27.     }
  28.    
  29.     public void dropBall() {
  30.         int pos = 0;
  31.         for (int i = 1; i < size; i++) {
  32.             pos += rgen.nextInt(2) == 0 ? 0 : 1;
  33.         }
  34.         buckets[pos]++;
  35.         balls++;
  36.     }
  37.    
  38.     public int getNumBalls() {
  39.         return balls;
  40.     }
  41.    
  42.     public void showBucketCounts() {
  43.         for (int i = 0; i < size; i++) {
  44.             System.out.printf(format + "%d\n", i, buckets[i]);
  45.         }
  46.     }
  47.    
  48.     public void showBucketGraph() {
  49.         int highest = buckets[0];
  50.         for (int i = 1; i < size; i++) {
  51.             int curr = buckets[i];
  52.             if (curr > highest) {highest = curr;}
  53.         }
  54.         double heightFactor = (double) PEAK_HEIGHT / highest;
  55.         for (int i = 0; i < size; i++) {
  56.             System.out.printf(format, i);
  57.             int barLen = (int) Math.round(buckets[i] * heightFactor);
  58.             String bar = "";
  59.             for (int j = 0; j < barLen; j++) {
  60.                 bar += BAR_CHAR;
  61.             }
  62.             System.out.println(bar);
  63.         }
  64.     }
  65.        
  66.     public static void main(String[] args) {
  67.         BeanMachine bt = new BeanMachine(101);
  68.         for (int i = 0; i < 1_000_000; i++) {
  69.             bt.dropBall();
  70.         }  
  71.         bt.showBucketGraph();
  72.         System.out.println();
  73.         bt.showBucketCounts();
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement