Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class BeanMachine {
- private static final int PEAK_HEIGHT = 50;
- private static final char BAR_CHAR = '*';
- private Random rgen;
- private int size, balls;
- private int[] buckets;
- private String format;
- public BeanMachine(int size) {
- rgen = new Random();
- this.size = size;
- buckets = new int[size];
- int numLen = (int) Math.ceil(Math.log10(size));
- format = "Bucket%0" + numLen +"d: ";
- reset();
- }
- public void reset() {
- for (int i = 0; i < size; i++) {
- buckets[i] = 0;
- }
- balls = 0;
- }
- public void dropBall() {
- int pos = 0;
- for (int i = 1; i < size; i++) {
- pos += rgen.nextInt(2) == 0 ? 0 : 1;
- }
- buckets[pos]++;
- balls++;
- }
- public int getNumBalls() {
- return balls;
- }
- public void showBucketCounts() {
- for (int i = 0; i < size; i++) {
- System.out.printf(format + "%d\n", i, buckets[i]);
- }
- }
- public void showBucketGraph() {
- int highest = buckets[0];
- for (int i = 1; i < size; i++) {
- int curr = buckets[i];
- if (curr > highest) {highest = curr;}
- }
- double heightFactor = (double) PEAK_HEIGHT / highest;
- for (int i = 0; i < size; i++) {
- System.out.printf(format, i);
- int barLen = (int) Math.round(buckets[i] * heightFactor);
- String bar = "";
- for (int j = 0; j < barLen; j++) {
- bar += BAR_CHAR;
- }
- System.out.println(bar);
- }
- }
- public static void main(String[] args) {
- BeanMachine bt = new BeanMachine(101);
- for (int i = 0; i < 1_000_000; i++) {
- bt.dropBall();
- }
- bt.showBucketGraph();
- System.out.println();
- bt.showBucketCounts();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement