From 328becca739cb6e32ae602fc91ebcf8c4ef296c9 Mon Sep 17 00:00:00 2001 From: junior Date: Wed, 24 Nov 2021 13:36:42 -0500 Subject: [PATCH 1/5] finished Dice and Bins classes --- pom.xml | 26 ++++++++++++++++++++++++++ src/main/java/Bins.java | 23 +++++++++++++++++++++++ src/main/java/Dice.java | 22 ++++++++++++++++++++++ src/main/java/main.java | 15 +++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 src/main/java/main.java diff --git a/pom.xml b/pom.xml index 7219542..bbf2229 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,32 @@ com.zipcodewilmington Dicey-Lab 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 7 + 7 + + + + + + + junit + junit + 4.13.1 + test + + + junit + junit + 4.13.1 + test + + \ No newline at end of file diff --git a/src/main/java/Bins.java b/src/main/java/Bins.java index b9da83e..5ebc816 100644 --- a/src/main/java/Bins.java +++ b/src/main/java/Bins.java @@ -1,4 +1,27 @@ +import java.util.Map; +import java.util.TreeMap; public class Bins { + private Integer binLow; + private Integer binHigh; + private Map binMap = new TreeMap<>(); + + public Bins(Integer binLow, Integer binHigh) { + this.binLow = binLow; + this.binHigh = binHigh; + + for (int i = binLow; i < binHigh ; i++) { + binMap.put(i,0); + } + } +public Integer getBin(Integer binNum){ + return binMap.get(binNum); +} + +public void incrementBin(Integer binNum){ + Integer qty = binMap.containsKey(binNum) ? binMap.get(binNum) : 0; + qty++; + binMap.put(binNum,qty); +} } diff --git a/src/main/java/Dice.java b/src/main/java/Dice.java index 2283c96..e12817e 100644 --- a/src/main/java/Dice.java +++ b/src/main/java/Dice.java @@ -1,4 +1,26 @@ +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + + public class Dice { + private Integer numberOfDie; + + + public Dice(int numberOfDie) { + this.numberOfDie = numberOfDie; + } + public Integer tossAndSum(){ + int random; + Integer sum = 0; + for (int i = 0; i < numberOfDie; i++) { + random = ThreadLocalRandom.current().nextInt(1,6); + sum += random; + } + return sum; + } + public Integer getNumberOfDie() { + return numberOfDie; + } } diff --git a/src/main/java/main.java b/src/main/java/main.java new file mode 100644 index 0000000..6bb4b5a --- /dev/null +++ b/src/main/java/main.java @@ -0,0 +1,15 @@ +public class main { + public static void main(String[] args) { + Dice dice = new Dice(5); + + + Bins bins = new Bins(2,12); + bins.incrementBin(3); + bins.incrementBin(4); + bins.incrementBin(4); + bins.incrementBin(4); + bins.incrementBin(4); + System.out.println(bins.getBin(3)); + System.out.println(bins.getBin(4)); + } +} From 7646581903c48efeb4e44d75301e2060f88f0083 Mon Sep 17 00:00:00 2001 From: junior Date: Wed, 24 Nov 2021 14:14:34 -0500 Subject: [PATCH 2/5] still working on printing --- src/main/java/Bins.java | 6 +++++- src/main/java/Simulation.java | 26 ++++++++++++++++++++++++++ src/main/java/main.java | 12 +++--------- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/java/Bins.java b/src/main/java/Bins.java index 5ebc816..62c08f5 100644 --- a/src/main/java/Bins.java +++ b/src/main/java/Bins.java @@ -18,7 +18,11 @@ public Integer getBin(Integer binNum){ return binMap.get(binNum); } -public void incrementBin(Integer binNum){ + public Map getBinMap() { + return binMap; + } + + public void incrementBin(Integer binNum){ Integer qty = binMap.containsKey(binNum) ? binMap.get(binNum) : 0; qty++; binMap.put(binNum,qty); diff --git a/src/main/java/Simulation.java b/src/main/java/Simulation.java index 73d86e8..c178af1 100644 --- a/src/main/java/Simulation.java +++ b/src/main/java/Simulation.java @@ -1,5 +1,31 @@ +import java.util.Map; + public class Simulation { + private Integer numberOfDies; + private Integer numberOfTosses; + private Bins bins; + + public Simulation(Integer numberOfDies, Integer numberOfTosses) { + this.numberOfDies = numberOfDies; + this.numberOfTosses = numberOfTosses; + } + + public Bins runSimulation(){ + Dice dice = new Dice(numberOfDies); + bins = new Bins(numberOfDies, numberOfDies*6); + Integer total; + for (int i = 0; i < numberOfTosses; i++) { + total = dice.tossAndSum(); + bins.incrementBin(total); + } + return bins; + } + public void printResults(){ + for (Map.Entry value : bins.getBinMap().entrySet()){ + System.out.println(value); + } + } } diff --git a/src/main/java/main.java b/src/main/java/main.java index 6bb4b5a..f62549a 100644 --- a/src/main/java/main.java +++ b/src/main/java/main.java @@ -2,14 +2,8 @@ public class main { public static void main(String[] args) { Dice dice = new Dice(5); - - Bins bins = new Bins(2,12); - bins.incrementBin(3); - bins.incrementBin(4); - bins.incrementBin(4); - bins.incrementBin(4); - bins.incrementBin(4); - System.out.println(bins.getBin(3)); - System.out.println(bins.getBin(4)); + Simulation simulation = new Simulation(4, 1000000); + simulation.runSimulation(); + simulation.printResults(); } } From d264386332a9141f662fe8cef540e198f0ea2bb4 Mon Sep 17 00:00:00 2001 From: junior Date: Wed, 24 Nov 2021 20:09:35 -0500 Subject: [PATCH 3/5] made some progress towards printing --- src/main/java/Bins.java | 19 ++++++++++--------- src/main/java/Dice.java | 2 +- src/main/java/Simulation.java | 1 + src/main/java/main.java | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/Bins.java b/src/main/java/Bins.java index 62c08f5..ddae3dc 100644 --- a/src/main/java/Bins.java +++ b/src/main/java/Bins.java @@ -10,22 +10,23 @@ public Bins(Integer binLow, Integer binHigh) { this.binLow = binLow; this.binHigh = binHigh; - for (int i = binLow; i < binHigh ; i++) { - binMap.put(i,0); + for (int i = binLow; i <= binHigh; i++) { + binMap.put(i, 0); } } -public Integer getBin(Integer binNum){ + + public Integer getBin(Integer binNum) { return binMap.get(binNum); -} + } public Map getBinMap() { return binMap; } - public void incrementBin(Integer binNum){ - Integer qty = binMap.containsKey(binNum) ? binMap.get(binNum) : 0; - qty++; - binMap.put(binNum,qty); -} + public void incrementBin(Integer binNum) { + Integer qty = binMap.containsKey(binNum) ? binMap.get(binNum) : 0; + qty++; + binMap.put(binNum, qty); + } } diff --git a/src/main/java/Dice.java b/src/main/java/Dice.java index e12817e..efdb0ea 100644 --- a/src/main/java/Dice.java +++ b/src/main/java/Dice.java @@ -14,7 +14,7 @@ public Integer tossAndSum(){ int random; Integer sum = 0; for (int i = 0; i < numberOfDie; i++) { - random = ThreadLocalRandom.current().nextInt(1,6); + random = ThreadLocalRandom.current().nextInt(1,7); sum += random; } return sum; diff --git a/src/main/java/Simulation.java b/src/main/java/Simulation.java index c178af1..738e659 100644 --- a/src/main/java/Simulation.java +++ b/src/main/java/Simulation.java @@ -14,6 +14,7 @@ public Bins runSimulation(){ Dice dice = new Dice(numberOfDies); bins = new Bins(numberOfDies, numberOfDies*6); Integer total; + for (int i = 0; i < numberOfTosses; i++) { total = dice.tossAndSum(); bins.incrementBin(total); diff --git a/src/main/java/main.java b/src/main/java/main.java index f62549a..3afa257 100644 --- a/src/main/java/main.java +++ b/src/main/java/main.java @@ -2,8 +2,8 @@ public class main { public static void main(String[] args) { Dice dice = new Dice(5); - Simulation simulation = new Simulation(4, 1000000); + Simulation simulation = new Simulation(2, 1_000_000); simulation.runSimulation(); - simulation.printResults(); + simulation.printResults(); } } From 05598d109ea59eff684012eadd3d9bfe528511b9 Mon Sep 17 00:00:00 2001 From: junior Date: Thu, 25 Nov 2021 10:02:14 -0500 Subject: [PATCH 4/5] completed printing still need to do testing --- src/main/java/Simulation.java | 33 +++++++++++++++++++++++++-------- src/main/java/main.java | 5 +++++ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/Simulation.java b/src/main/java/Simulation.java index 738e659..cd0f181 100644 --- a/src/main/java/Simulation.java +++ b/src/main/java/Simulation.java @@ -10,22 +10,39 @@ public Simulation(Integer numberOfDies, Integer numberOfTosses) { this.numberOfTosses = numberOfTosses; } - public Bins runSimulation(){ + public Bins runSimulation() { Dice dice = new Dice(numberOfDies); - bins = new Bins(numberOfDies, numberOfDies*6); + bins = new Bins(numberOfDies, numberOfDies * 6); Integer total; for (int i = 0; i < numberOfTosses; i++) { - total = dice.tossAndSum(); - bins.incrementBin(total); + total = dice.tossAndSum(); + bins.incrementBin(total); } return bins; } - public void printResults(){ - for (Map.Entry value : bins.getBinMap().entrySet()){ - System.out.println(value); - } + public void printResults() { + System.out.println("***"); + System.out.println("Simulation of " + numberOfDies + " dice tossed for " + numberOfTosses + " times."); + System.out.println("***\n"); + for (Map.Entry value : bins.getBinMap().entrySet()) { + Integer val = (Integer) value.getValue(); + Double percent = Double.valueOf(val) / numberOfTosses; + + String stringFormat = String.format("%2d : %8d : %.2f", value.getKey(), value.getValue(), percent); + System.out.println(stringFormat + " " + printStars(val)); + + } + } + + public String printStars(Integer number) { + Integer dividedByTenThousand = number / 10000; + String stars = ""; + for (int i = 0; i < dividedByTenThousand; i++) { + stars += "*"; + } + return stars; } diff --git a/src/main/java/main.java b/src/main/java/main.java index 3afa257..ccd482d 100644 --- a/src/main/java/main.java +++ b/src/main/java/main.java @@ -5,5 +5,10 @@ public static void main(String[] args) { Simulation simulation = new Simulation(2, 1_000_000); simulation.runSimulation(); simulation.printResults(); + + + // System.out.printf("%10s", "Hello"); + + // simulation.printStars(110903); } } From 920207f2fb81c7214b8180b890ce90806e7baee7 Mon Sep 17 00:00:00 2001 From: junior Date: Thu, 25 Nov 2021 10:58:49 -0500 Subject: [PATCH 5/5] added tests --- src/main/java/Bins.java | 2 ++ src/main/java/Simulation.java | 6 ++++++ src/main/java/main.java | 6 ------ src/test/java/SimulationTest.java | 20 +++++++++++++++++++ src/test/java/TestBins.java | 32 +++++++++++++++++++++++++++++++ src/test/java/TestDice.java | 28 +++++++++++++++++++++++++++ 6 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 src/test/java/SimulationTest.java create mode 100644 src/test/java/TestBins.java create mode 100644 src/test/java/TestDice.java diff --git a/src/main/java/Bins.java b/src/main/java/Bins.java index ddae3dc..456eb92 100644 --- a/src/main/java/Bins.java +++ b/src/main/java/Bins.java @@ -1,3 +1,4 @@ +import java.beans.Transient; import java.util.Map; import java.util.TreeMap; @@ -29,4 +30,5 @@ public void incrementBin(Integer binNum) { binMap.put(binNum, qty); } + } diff --git a/src/main/java/Simulation.java b/src/main/java/Simulation.java index cd0f181..6f3ef8a 100644 --- a/src/main/java/Simulation.java +++ b/src/main/java/Simulation.java @@ -45,5 +45,11 @@ public String printStars(Integer number) { return stars; } + public Integer getNumberOfDies() { + return numberOfDies; + } + public Integer getNumberOfTosses() { + return numberOfTosses; + } } diff --git a/src/main/java/main.java b/src/main/java/main.java index ccd482d..b0533e7 100644 --- a/src/main/java/main.java +++ b/src/main/java/main.java @@ -1,14 +1,8 @@ public class main { public static void main(String[] args) { - Dice dice = new Dice(5); - Simulation simulation = new Simulation(2, 1_000_000); simulation.runSimulation(); simulation.printResults(); - - // System.out.printf("%10s", "Hello"); - - // simulation.printStars(110903); } } diff --git a/src/test/java/SimulationTest.java b/src/test/java/SimulationTest.java new file mode 100644 index 0000000..75e95f6 --- /dev/null +++ b/src/test/java/SimulationTest.java @@ -0,0 +1,20 @@ +import org.junit.Assert; +import org.junit.Test; + +public class SimulationTest { + @Test + public void constructorTest(){ + //given + Simulation simulation = new Simulation(2, 1000000); + Integer expectedNumberOfDies = 2; + Integer expectedNumberOfTosses = 1000000; + //when + Integer actualNumberOfDies = simulation.getNumberOfDies(); + Integer actualNumberOfTosses = simulation.getNumberOfTosses(); + //then + Assert.assertEquals(expectedNumberOfDies, actualNumberOfDies); + Assert.assertEquals(expectedNumberOfTosses, actualNumberOfTosses); + } + + +} diff --git a/src/test/java/TestBins.java b/src/test/java/TestBins.java new file mode 100644 index 0000000..65e1357 --- /dev/null +++ b/src/test/java/TestBins.java @@ -0,0 +1,32 @@ +import org.junit.Assert; +import org.junit.Test; + +public class TestBins { + + @Test + public void constructorTest(){ + //given + Bins bins = new Bins(2, 12); + Integer expectedSize= 11; + //when + Integer actualSize = bins.getBinMap().size(); + //then + Assert.assertEquals(expectedSize, actualSize); + } + + @Test + public void incrementBinTest(){ + //given + Bins bins = new Bins(2, 12); + Integer expected = 1; + //when + bins.incrementBin(2); + Integer actual = bins.getBin(2); + //then + Assert.assertEquals(expected, actual); + + } + + + +} diff --git a/src/test/java/TestDice.java b/src/test/java/TestDice.java new file mode 100644 index 0000000..a686d78 --- /dev/null +++ b/src/test/java/TestDice.java @@ -0,0 +1,28 @@ +import org.junit.Assert; +import org.junit.Test; + +public class TestDice { + + + @Test + public void constructorTest(){ + //given + Dice dice = new Dice(5); + Integer expected = 5; + + //when + Integer actual = dice.getNumberOfDie(); + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void tossAndSumTest(){ + //given + Dice dice = new Dice(2); + //when + Integer actual = dice.tossAndSum(); + //then + Assert.assertTrue(actual <= 12); // max sum of toss is 12 bec 2 dice * 6 + } +}