Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Monte-Carlo-methods/Java/monte-carlo-methods-1.java
Normal file
26
Task/Monte-Carlo-methods/Java/monte-carlo-methods-1.java
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
public class MC {
|
||||
public static void main(String[] args) {
|
||||
System.out.println(getPi(10000));
|
||||
System.out.println(getPi(100000));
|
||||
System.out.println(getPi(1000000));
|
||||
System.out.println(getPi(10000000));
|
||||
System.out.println(getPi(100000000));
|
||||
|
||||
}
|
||||
public static double getPi(int numThrows){
|
||||
int inCircle= 0;
|
||||
for(int i= 0;i < numThrows;i++){
|
||||
//a square with a side of length 2 centered at 0 has
|
||||
//x and y range of -1 to 1
|
||||
double randX= (Math.random() * 2) - 1;//range -1 to 1
|
||||
double randY= (Math.random() * 2) - 1;//range -1 to 1
|
||||
//distance from (0,0) = sqrt((x-0)^2+(y-0)^2)
|
||||
double dist= Math.sqrt(randX * randX + randY * randY);
|
||||
//^ or in Java 1.5+: double dist= Math.hypot(randX, randY);
|
||||
if(dist < 1){//circle with diameter of 2 has radius of 1
|
||||
inCircle++;
|
||||
}
|
||||
}
|
||||
return 4.0 * inCircle / numThrows;
|
||||
}
|
||||
}
|
||||
44
Task/Monte-Carlo-methods/Java/monte-carlo-methods-2.java
Normal file
44
Task/Monte-Carlo-methods/Java/monte-carlo-methods-2.java
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
package montecarlo;
|
||||
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.DoubleStream;
|
||||
|
||||
import static java.lang.Math.random;
|
||||
import static java.lang.Math.hypot;
|
||||
import static java.lang.System.out;
|
||||
|
||||
public interface MonteCarlo {
|
||||
public static void main(String... arguments) {
|
||||
IntStream.of(
|
||||
10000,
|
||||
100000,
|
||||
1000000,
|
||||
10000000,
|
||||
100000000
|
||||
)
|
||||
.mapToDouble(MonteCarlo::pi)
|
||||
.forEach(out::println)
|
||||
;
|
||||
}
|
||||
|
||||
public static double range() {
|
||||
//a square with a side of length 2 centered at 0 has
|
||||
//x and y range of -1 to 1
|
||||
return (random() * 2) - 1;
|
||||
}
|
||||
|
||||
public static double pi(int numThrows){
|
||||
long inCircle = DoubleStream.generate(
|
||||
//distance from (0,0) = hypot(x, y)
|
||||
() -> hypot(range(), range())
|
||||
)
|
||||
.limit(numThrows)
|
||||
.unordered()
|
||||
.parallel()
|
||||
//circle with diameter of 2 has radius of 1
|
||||
.filter(d -> d < 1)
|
||||
.count()
|
||||
;
|
||||
return (4.0 * inCircle) / numThrows;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue