>>801 > y=sinx の (0,0)から(1,2/π)までの面積を求めよ ってのはy=sin(x)とy=0に挟まれた面積を求めよってことだよね? sin(1)≠2/πだけれど積分範囲は0から1でいいの? もしかして、(1,2/π)は(π/2,1)のつもりで積分範囲は0からπ/2かもと思って、 コメントアウトしている部分にその場合のコードも入れておいた。 import java.util.Random; public class MonteCarlo { public static void main(String[] args) { Random r = new Random(); int N = 1000000; int n = 0; // 積分範囲が[0,1]の時 解析解=1-cos(1) for (int i = N; i > 0; i--) if (Math.sin(r.nextDouble()) > r.nextDouble()) n++; System.out.println((double)n / N); // モンテカルロ法 System.out.println(1 - Math.cos(1)); // 解析解 // 積分範囲が[0,π/2]の時 解析解=1 /*double p2 = Math.PI / 2; n = 0; for (int i = N; i > 0; i--) if (Math.sin(r.nextDouble() * p2) > r.nextDouble()) n++; System.out.println((double)n / N * p2);*/ } }