계산 단위 광장에 던지는 다트를 시뮬레이션하여 π의 추정치를 단위 원에있는 그들 중 일부분을 결정하는 것.
랜덤 x 좌표를 생성하는 방법에 대한 저의 아이디어는 범위 [0, 1]에서 두 개의 균일 한 난수를 선택한 다음이를 뺍니다. 결과 값의 범위는 -1에서 +1까지입니다.
이public class MonteCarlo
{
public static void main(String[] args)
{
System.out.println("Number of tries");
Random generator = new Random(42);
Scanner in = new Scanner(System.in);
int tries = in.nextInt();
int hits = 0;
for (int i = 1; i <= tries; i++)
{
// Generate two random numbers between -1 and 1
double x = generator.nextDouble() * 2 -1 ;
double y = generator.nextDouble() * 2 -1 ;
// Check whether the point lies in the unit circle
if (Math.sqrt((x - 0) * (x - 0) + (y - 0) * (y - 0)) <= 1)
{
hits++;
}
}
/*
The ratio hits/tries is approximately the same as the ratio
circle area/square area = pi/4
*/
double piEstimate = 4.0 * hits/tries;
System.out.println("Estimate for pi: " + piEstimate);
}
}
내 질문은, 어떻게 내 강사의 접근 방식과 내 방식이 다른가요된다
강사의 대답은 (2)에 의해 생성 된 두 배를 곱하고 여기에 자신의 코드의 1을 빼야했다? 내 생각이 효과가 있니?
두 개의 주사위 롤을 추가하는 것과 같은 이유 때문에 하나의 다이를 스케일링하는 것과 동일하지 않습니다. – harold
강사의 답변과 왜 그것이 옳은지 설명하는 대신, 우리에게 당신의 대답을 제공하고 우리에게 설명하는 것이 더 나을 것이라고 생각합니다. 왜 틀렸어. –
귀하의 방법은 -1과 1 사이의 값을 _evenly_ 배포하지 않습니다. 강사의 방법이됩니다. – GriffeyDog