Skip to content

Commit 4081ed4

Browse files
committed
Chapter 03 section 06 codes added.
1 parent ba9a72b commit 4081ed4

File tree

2 files changed

+47
-4
lines changed

2 files changed

+47
-4
lines changed

03-Probability-Simulation/05-Pi-Estimation-Without-Rendering/src/MonteCarloExperiment.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ public class MonteCarloExperiment {
55
private int squareSide;
66
private int N;
77
private int outputInterval = 100;
8-
MonteCarloPiData data;
98

109
public MonteCarloExperiment(int squareSide, int N){
1110

@@ -14,9 +13,6 @@ public MonteCarloExperiment(int squareSide, int N){
1413

1514
this.squareSide = squareSide;
1615
this.N = N;
17-
18-
Circle circle = new Circle(squareSide/2, squareSide/2, squareSide/2);
19-
data = new MonteCarloPiData(circle);
2016
}
2117

2218
public void setOutputInterval(int interval){
@@ -29,6 +25,9 @@ public void setOutputInterval(int interval){
2925

3026
public void run(){
3127

28+
Circle circle = new Circle(squareSide/2, squareSide/2, squareSide/2);
29+
MonteCarloPiData data = new MonteCarloPiData(circle);
30+
3231
for(int i = 0 ; i < N ; i ++){
3332

3433
if( i % outputInterval == 0) {
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
public class ThreeGatesExperiment {
3+
4+
private int N;
5+
6+
public ThreeGatesExperiment(int N){
7+
8+
if(N <= 0)
9+
throw new IllegalArgumentException("N must be larger than 0!");
10+
11+
this.N = N;
12+
}
13+
14+
public void run(boolean changeDoor){
15+
16+
int wins = 0;
17+
for(int i = 0 ; i < N ; i ++)
18+
if(play(changeDoor))
19+
wins ++;
20+
System.out.println(changeDoor ? "Change" : "Not Change");
21+
System.out.println("win rate:" + (double)wins/N);
22+
}
23+
24+
private boolean play(boolean changeDoor){
25+
26+
int prizeDoor = (int)(Math.random() * 3);
27+
int playerChoice = (int)(Math.random() * 3);
28+
29+
if(playerChoice == prizeDoor)
30+
return changeDoor ? false : true;
31+
else
32+
return changeDoor ? true : false;
33+
}
34+
35+
public static void main(String[] args) {
36+
37+
int N = 1000000;
38+
ThreeGatesExperiment exp = new ThreeGatesExperiment(N);
39+
40+
exp.run(true);
41+
System.out.println();
42+
exp.run(false);
43+
}
44+
}

0 commit comments

Comments
 (0)