Skip to content

completed lab #55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,38 @@
<groupId>com.zipcodewilmington</groupId>
<artifactId>Dicey-Lab</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>compile</scope>
</dependency>
</dependencies>


</project>
25 changes: 25 additions & 0 deletions src/main/java/Bins.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,29 @@
import java.util.HashMap;
import java.util.Map;

public class Bins {

Map<Integer , Integer> mapBins = new HashMap<>();
private Integer minimumNumber;
private Integer maximumNumber;

public Bins(int minimumNumber, int maximumNumber){
this.minimumNumber = minimumNumber;
this.maximumNumber= maximumNumber;
for (int i = minimumNumber; i <= maximumNumber ; i++) {
mapBins.put(i,0);

}
}

public Integer getBin(int binNumber){
return mapBins.get(binNumber);
}

public void incrementBin(Integer binNumber){
if(binNumber >=this.minimumNumber && binNumber <= this.maximumNumber){
Integer currentResult = this.getBin(binNumber);
this.mapBins.put(binNumber , currentResult + 1);
}
}
}
32 changes: 32 additions & 0 deletions src/main/java/BinsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@


import org.junit.Test;
import org.junit.jupiter.api.Assertions;

import static org.junit.jupiter.api.Assertions.*;

public class BinsTest {

@Test
public void getBins(){
//given
Bins bins = new Bins(2,12);

//when
int actual = bins.getBin(4);

//Then
Assertions.assertEquals(0,actual);
}

@Test
public void incrementTest(){
//given
Bins bins = new Bins(2,12);
int expected = 2;
bins.incrementBin(10);
bins.incrementBin(10);
assertEquals(expected, bins.getBin(10));
}

}
18 changes: 18 additions & 0 deletions src/main/java/Dice.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,22 @@


public class Dice {
private Integer numberOnDice;

public Dice(Integer numberOfDice){
this.numberOnDice = numberOfDice;
}

public int tossAndAdd(){
int sum = 0;
for (int i = 0; i < numberOnDice ; i++) {
sum+= (int) (Math.random() * 6 ) + 1;

}
return sum;
}

public Integer getNumberOfDice() {
return numberOnDice;
}
}
16 changes: 16 additions & 0 deletions src/main/java/DiceTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import org.junit.Test;

import static org.junit.jupiter.api.Assertions.*;



public class DiceTest {
@Test
public void testDiceTossAndAdd(){
int numberOfDice = 2;
Dice dice = new Dice(numberOfDice);
int actual = dice.tossAndAdd();
assertTrue(actual >= 1 && actual <= 13);
}

}
43 changes: 43 additions & 0 deletions src/main/java/Simulation.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,48 @@



public class Simulation {
private Integer numberOfDice;
private Integer numberOfTosses;

public Simulation(Integer numberOfDice , Integer numberOfTosses){
this.numberOfDice = numberOfDice;
this.numberOfTosses = numberOfTosses;
}

public static void main(String[] args){
Simulation simulation = new Simulation(2,10000);
simulation.printResults(simulation.runSimulation());
}

private Bins runSimulation(){
Dice dice = new Dice(numberOfDice);
Integer maxValue = numberOfDice * 6;
Bins bins = new Bins(numberOfDice, maxValue);
for (int i = 0; i < numberOfTosses ; i++) {
bins.incrementBin(dice.tossAndAdd());

}
return bins;
}

private void printResults(Bins bins){
Integer maxValue = numberOfDice * 6;
for (int i = numberOfDice; i < maxValue ; i++) {
System.out.println(String.format("%2d : %4d : %1.2f ",i, bins.getBin(i),binPercent(bins.getBin(i))));
printHash(binPercent(bins.getBin(i)));
System.out.println();
}
}
public void printHash(Double Value){
int numberOfHash = (int)(Value * 100);
for (int i = 1; i <= numberOfHash ; i++) {
System.out.print(" # ");

}
}
public Double binPercent(Integer Value){
return Double.valueOf(Value) /numberOfTosses;
}

}