Toss some dice, ONE Million times, and produce an ASCII graph.

Simulation.java 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. public class Simulation {
  2. int numOfDice, numOfTosses;
  3. Dice dice;
  4. Bins bin;
  5. Simulation(int numDice, int numToss){
  6. this.numOfDice = numDice;
  7. this.numOfTosses = numToss;
  8. dice = new Dice(numDice);
  9. bin = new Bins(numDice);
  10. }
  11. public int getRoll(){ return dice.tossSum(); }
  12. public void simulate(){
  13. for(int i = 0; i< this.numOfTosses; i++){
  14. bin.incrementBin(getRoll());
  15. }
  16. }
  17. public double toPercent(int diceVal){
  18. double result = (double)bin.binResults.get(diceVal)/this.numOfTosses;
  19. return result;
  20. }
  21. public String getStars(double percent) {
  22. String output = new String();
  23. int numOfStars = (int)(percent*100);
  24. for(int i = 0; i < numOfStars; i++){
  25. output += "*";
  26. }
  27. return output;
  28. }
  29. public void printResults(){
  30. System.out.println("***********************************************");
  31. System.out.println("Simulation of " + this.numOfDice + " dice tossed for " + this.numOfTosses + " times.");
  32. System.out.println("***********************************************\n");
  33. for(Integer num : bin.binResults.keySet()) {
  34. String output = String.format("%3d : %9d -> %6.2f %-5s", num, bin.binResults.get(num),
  35. toPercent(num), getStars(toPercent(num)));
  36. System.out.println(output);
  37. }
  38. }
  39. }