From d94ac985b49f54b5ca4d781fa0d05c55a902498c Mon Sep 17 00:00:00 2001 From: Rex Date: Sat, 17 Jul 2021 22:54:32 -0400 Subject: [PATCH] dicey diceylab done --- src/main/java/Bins.java | 26 +++++++++++++++++++ src/main/java/Dice.java | 15 +++++++++++ src/main/java/Simulation.java | 48 +++++++++++++++++++++++++++++++++++ src/results | 11 ++++++++ 4 files changed, 100 insertions(+) create mode 100644 src/results diff --git a/src/main/java/Bins.java b/src/main/java/Bins.java index b9da83e..d3e8d60 100644 --- a/src/main/java/Bins.java +++ b/src/main/java/Bins.java @@ -1,4 +1,30 @@ +import java.util.Arrays; public class Bins { + private int binMin; + private int binMax; + private Integer[] boxes; + public Bins(int binMin, int binMax) { + this.binMin = binMin; + this.binMax = binMax; + boxes = new Integer[binMax - binMin + 1]; + Arrays.fill(boxes, 0); //populate bins (boxes) with 0's as initial value + } + + public void incrementBin(int binNum) { + boxes[binNum - binMin ]++; //binNum - number of dice - raises bin min by 1 each extra dice + } + + public Integer getBin(int binNum) { + return boxes[binNum - binMin]; + } + + public Integer[] getBoxes() { + return boxes; + } + + public int getBinMin() { + return binMin; + } } diff --git a/src/main/java/Dice.java b/src/main/java/Dice.java index 2283c96..6ccda1f 100644 --- a/src/main/java/Dice.java +++ b/src/main/java/Dice.java @@ -1,4 +1,19 @@ public class Dice { + private int numberOfDice; + public Dice(int numberDice) { + this.numberOfDice = numberDice; + } + public Integer tossAndSum() { + Integer sum = 0; + int minimum = 1; + int maximum = 7; + + for (int i = 0; i < numberOfDice; i++) { + sum += minimum + (int)(Math.random() * (maximum - minimum)); + + } + return sum; + } } diff --git a/src/main/java/Simulation.java b/src/main/java/Simulation.java index 73d86e8..9e362f3 100644 --- a/src/main/java/Simulation.java +++ b/src/main/java/Simulation.java @@ -1,5 +1,53 @@ +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; + public class Simulation { + public static void main(String[] args) { + int numDice = 2; + Dice dice = new Dice(numDice); + Bins bin = new Bins(numDice, numDice*6); + + for (int i = 0; i <1000000; i++) { + bin.incrementBin(dice.tossAndSum()); + } + printResults(1000000, bin ); + } + + public static List tally(Integer numOfTosses, Bins bin) { + List percent = new ArrayList(); + for (Integer element : bin.getBoxes()){ + double tallyPercent = ((double)element / numOfTosses); + BigDecimal bigD = new BigDecimal(Double.toString(tallyPercent)); + bigD = bigD.setScale(2, RoundingMode.HALF_UP); + percent.add(bigD.doubleValue()); //adds bigD into percent array + } + return percent; + } + + public static void printResults(Integer numOfTosses, Bins bins){ + List results = tally(numOfTosses, bins); + Integer diceNum = bins.getBinMin(); + Integer numOfStars = 0; + String printResults = ""; + + for (Double element : results) { + numOfStars = (int)(element * 100); + printResults += String.format("%3d: %7d %1.2f ", diceNum, bins.getBin(diceNum), element); + for (int j = 1; j < numOfStars; j++) { + printResults += "*"; + } + diceNum++; + printResults += "\n"; + } + System.out.println(printResults); + + + } + + } diff --git a/src/results b/src/results new file mode 100644 index 0000000..0d91e9f --- /dev/null +++ b/src/results @@ -0,0 +1,11 @@ + 2: 27535 0.03 ** + 3: 55252 0.06 ***** + 4: 83104 0.08 ******* + 5: 111452 0.11 ********** + 6: 138665 0.14 ************* + 7: 166394 0.17 **************** + 8: 139454 0.14 ************* + 9: 111419 0.11 ********** + 10: 83438 0.08 ******* + 11: 55416 0.06 ***** + 12: 27871 0.03 ** \ No newline at end of file