From 16d7d3cf3d977de0fb0e491296fe4d6a23e8a68f Mon Sep 17 00:00:00 2001
From: Amanda Huang <79762895+AmandaJ-Huang@users.noreply.github.com>
Date: Sat, 20 Nov 2021 10:54:33 -0500
Subject: [PATCH 1/5] DiceTest added
---
pom.xml | 8 ++++++++
src/test/java/DiceTest.java | 9 +++++++++
2 files changed, 17 insertions(+)
create mode 100644 src/test/java/DiceTest.java
diff --git a/pom.xml b/pom.xml
index 7219542..1b5e145 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,14 @@
com.zipcodewilmington
Dicey-Lab
1.0-SNAPSHOT
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
\ No newline at end of file
diff --git a/src/test/java/DiceTest.java b/src/test/java/DiceTest.java
new file mode 100644
index 0000000..57b44ea
--- /dev/null
+++ b/src/test/java/DiceTest.java
@@ -0,0 +1,9 @@
+import org.junit.Test;
+
+public class DiceTest{
+
+ @Test
+ public void tossOneTest() {
+
+ }
+}
From f348d42ac5c08187cf80a8bc64bba91484c91249 Mon Sep 17 00:00:00 2001
From: Amanda Huang <79762895+AmandaJ-Huang@users.noreply.github.com>
Date: Sat, 20 Nov 2021 10:57:35 -0500
Subject: [PATCH 2/5] set up main
---
src/main/java/MainApplication.java | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 src/main/java/MainApplication.java
diff --git a/src/main/java/MainApplication.java b/src/main/java/MainApplication.java
new file mode 100644
index 0000000..6f07a12
--- /dev/null
+++ b/src/main/java/MainApplication.java
@@ -0,0 +1,5 @@
+public class MainApplication {
+ public static void main(String[] args) {
+ Simulation sim = new Simulation();
+ }
+}
From 041262e1508c3a88ee8a1e945bdc771a1e979438 Mon Sep 17 00:00:00 2001
From: Amanda Huang <79762895+AmandaJ-Huang@users.noreply.github.com>
Date: Sat, 20 Nov 2021 11:37:58 -0500
Subject: [PATCH 3/5] added Dice constructor and tossAndSum method
---
pom.xml | 4 ++++
src/main/java/Dice.java | 15 +++++++++++++++
src/test/java/DiceTest.java | 22 +++++++++++++++++++++-
3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 1b5e145..ee02794 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,10 @@
test
+
+ 11
+ 11
+
\ No newline at end of file
diff --git a/src/main/java/Dice.java b/src/main/java/Dice.java
index 2283c96..f307489 100644
--- a/src/main/java/Dice.java
+++ b/src/main/java/Dice.java
@@ -1,4 +1,19 @@
+import java.util.Random;
+
public class Dice {
+ private Integer numberOfDie;
+
+ public Dice(int numberOfDie) {
+ this.numberOfDie = numberOfDie;
+ }
+ public Integer tossAndSum() {
+ Random random = new Random();
+ Integer sum = 0;
+ for (int i = 0; i < numberOfDie; i++) {
+ sum += random.nextInt(6) + 1;
+ }
+ return sum;
+ }
}
diff --git a/src/test/java/DiceTest.java b/src/test/java/DiceTest.java
index 57b44ea..bde5f83 100644
--- a/src/test/java/DiceTest.java
+++ b/src/test/java/DiceTest.java
@@ -1,9 +1,29 @@
+import org.junit.Assert;
import org.junit.Test;
public class DiceTest{
@Test
- public void tossOneTest() {
+ public void tossAndSumTwoDiceTest() {
+ //Given
+ Dice dice = new Dice(2);
+ //When
+ Integer toss = dice.tossAndSum();
+
+ //Then
+ Assert.assertTrue((toss > 1) && (toss < 13));
+ }
+
+ @Test
+ public void tossAndSumFiveDiceTest() {
+ //Given
+ Dice dice = new Dice(5);
+
+ //When
+ Integer toss = dice.tossAndSum();
+
+ //Then
+ Assert.assertTrue((toss > 4) && (toss < 31));
}
}
From 4e9386a7dd1c5c4a40dbcd87388afd2364c432b9 Mon Sep 17 00:00:00 2001
From: Amanda Huang <79762895+AmandaJ-Huang@users.noreply.github.com>
Date: Sat, 20 Nov 2021 12:25:00 -0500
Subject: [PATCH 4/5] Bins constructor, getBin, and incrementBin methods
---
src/main/java/Bins.java | 22 ++++++++++++++++++++++
src/main/java/Dice.java | 4 ++++
src/test/java/BinsTest.java | 34 ++++++++++++++++++++++++++++++++++
src/test/java/DiceTest.java | 13 +++++++++++++
4 files changed, 73 insertions(+)
create mode 100644 src/test/java/BinsTest.java
diff --git a/src/main/java/Bins.java b/src/main/java/Bins.java
index b9da83e..ff78e79 100644
--- a/src/main/java/Bins.java
+++ b/src/main/java/Bins.java
@@ -1,4 +1,26 @@
+import java.util.HashMap;
+import java.util.Map;
public class Bins {
+ private Integer lower;
+ private Integer upper;
+ private Map binsMap = new HashMap<>();
+
+ public Bins(Integer lower, Integer upper) {
+ this.lower = lower;
+ this.upper = upper;
+
+ for (int i = lower; i <= upper; i++) {
+ binsMap.put(i, 0);
+ }
+ }
+
+ public Integer getBin(int bin) {
+ return binsMap.get(bin);
+ }
+
+ public void incrementBin(int bin) {
+ binsMap.put(bin, getBin(bin)+1);
+ }
}
diff --git a/src/main/java/Dice.java b/src/main/java/Dice.java
index f307489..07e1e4c 100644
--- a/src/main/java/Dice.java
+++ b/src/main/java/Dice.java
@@ -16,4 +16,8 @@ public Integer tossAndSum() {
}
return sum;
}
+
+ public Integer getNumOfDie() {
+ return this.numberOfDie;
+ }
}
diff --git a/src/test/java/BinsTest.java b/src/test/java/BinsTest.java
new file mode 100644
index 0000000..8dcef99
--- /dev/null
+++ b/src/test/java/BinsTest.java
@@ -0,0 +1,34 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+public class BinsTest {
+
+ @Test
+ public void incrementBinTest() {
+ //Given
+ Bins bins = new Bins(2, 12);
+ Integer expected = 1;
+
+ //When
+ bins.incrementBin(10);
+ Integer actual = bins.getBin(10);
+
+ //Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void binsConstructorTest() {
+ //Given
+ Integer lower = 2;
+ Integer upper = 12;
+ Integer expected = 0;
+
+ //When
+ Bins bins = new Bins(lower, upper);
+ Integer actual = bins.getBin(2);
+
+ //Then
+ Assert.assertEquals(expected, actual);
+ }
+}
diff --git a/src/test/java/DiceTest.java b/src/test/java/DiceTest.java
index bde5f83..6a3eec6 100644
--- a/src/test/java/DiceTest.java
+++ b/src/test/java/DiceTest.java
@@ -3,6 +3,19 @@
public class DiceTest{
+ @Test
+ public void diceConstructorTest() {
+ //Given
+ Integer expectedNumOfDie = 8;
+
+ //When
+ Dice dice = new Dice(expectedNumOfDie);
+ Integer actual = dice.getNumOfDie();
+
+ //Then
+ Assert.assertEquals(expectedNumOfDie, actual);
+ }
+
@Test
public void tossAndSumTwoDiceTest() {
//Given
From eebab62c3089c83c2b98af8c63011a0176e19330 Mon Sep 17 00:00:00 2001
From: Amanda Huang <79762895+AmandaJ-Huang@users.noreply.github.com>
Date: Sat, 20 Nov 2021 13:52:11 -0500
Subject: [PATCH 5/5] simulation output formatting matches readme sample
---
src/main/java/MainApplication.java | 5 ++-
src/main/java/Simulation.java | 56 ++++++++++++++++++++++++++++++
src/test/java/SimulationTest.java | 22 ++++++++++++
3 files changed, 82 insertions(+), 1 deletion(-)
create mode 100644 src/test/java/SimulationTest.java
diff --git a/src/main/java/MainApplication.java b/src/main/java/MainApplication.java
index 6f07a12..2d541b4 100644
--- a/src/main/java/MainApplication.java
+++ b/src/main/java/MainApplication.java
@@ -1,5 +1,8 @@
public class MainApplication {
public static void main(String[] args) {
- Simulation sim = new Simulation();
+ Simulation sim = new Simulation(2, 1000000);
+
+ sim.runSimulation();
+ sim.printResults();
}
}
diff --git a/src/main/java/Simulation.java b/src/main/java/Simulation.java
index 73d86e8..48629c4 100644
--- a/src/main/java/Simulation.java
+++ b/src/main/java/Simulation.java
@@ -1,5 +1,61 @@
public class Simulation {
+ private Integer numberOfDie;
+ private Integer numberOfTosses;
+ private Bins bins;
+ public Simulation(Integer numberOfDie, Integer numberOfTosses) {
+ this.numberOfDie = numberOfDie;
+ this.numberOfTosses = numberOfTosses;
+ }
+
+ public Integer getNumOfDie() {
+ return this.numberOfDie;
+ }
+
+ public Integer getNumOfTosses() {
+ return this.numberOfTosses;
+ }
+
+ public Bins runSimulation() {
+ Dice dice = new Dice(numberOfDie);
+ bins = new Bins(numberOfDie, numberOfDie*6);
+ Integer result;
+
+ for (int i = 0; i < numberOfTosses; i++) {
+ result = dice.tossAndSum();
+ bins.incrementBin(result);
+ }
+ return bins;
+ }
+
+ public void printResults() {
+
+ System.out.println(new StringBuilder()
+ .append("\n***")
+ .append("\nSimulation of " + numberOfDie + " dice tossed " + numberOfTosses + " times.")
+ .append("\n***")
+ + printBins(bins));
+
+ }
+
+
+ private String printBins(Bins bins) {
+ String binLine = "";
+ Double binPercent;
+ Integer stars = 0;
+
+ for(int i = numberOfDie; i <= (numberOfDie*6); i++) {
+ binPercent = ((double) bins.getBin(i)) / numberOfTosses;
+ binLine += String.format("\n%2d : %8d : %.2f ", i, bins.getBin(i), binPercent);
+
+ stars = (100 * bins.getBin(i)) / numberOfTosses;
+
+ for (int j = 0; j < stars; j++) {
+ binLine += "*";
+ }
+ }
+ return binLine;
+ }
}
diff --git a/src/test/java/SimulationTest.java b/src/test/java/SimulationTest.java
new file mode 100644
index 0000000..ec1769f
--- /dev/null
+++ b/src/test/java/SimulationTest.java
@@ -0,0 +1,22 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SimulationTest {
+
+ @Test
+ public void simulationConstructorTest() {
+ //Given
+ Integer numberOfDie = 2;
+ Integer numberOfTosses = 10000;
+
+ //When
+ Simulation sim = new Simulation(numberOfDie, numberOfTosses);
+ Integer actualNumOfDie = sim.getNumOfDie();
+ Integer actualNumOfTosses = sim.getNumOfTosses();
+
+ //Then
+ Assert.assertEquals(numberOfDie, actualNumOfDie);
+ Assert.assertEquals(numberOfTosses, actualNumOfTosses);
+ }
+
+}