14.6 몬테카를로 방법으로 원의 넓이 측정하기
p.150 몬테카를로 방법으로 원의 넓이 측정하는 코드
책에 제시된 코드는 오류를 일으킬 수 있는 부분을 포함하고 있었습니다.
var x = 0 ;
var y = 0 ;
var dist = 0 ;
var cnt = 0 ;
for( var i = 0 ; i < 1000 ; i ++ )
{
x = Math.random();
y = Math.random();
ggbApplet.evalCommand( "P_" + i + "= ( " + x + "," + y + ")" );
dist = Math.sqrt( (x - 0.5)^2 + ( y - 0.5)^2 ) ;
if (dist <= 0.5 )
{
cnt ++;
ggbApplet.evalCommand( "텍스트1 = " + cnt / 1000 );
}
}
p.150의 개선된 코드
교재에 제시된 코드를 검토한 결과 문제가 있어 아래와 같이 수정하였습니다.
var x = 0 ;
var y = 0 ;
var dist = 0 ;
var cnt = 0 ;
for ( var i = 0 ; i < 100 ; i ++ ) {
x = Math.random();
y = Math.random();
ggbApplet.evalCommand( "P_{" + i + "} = (" + x + "," + y + ")" );
dist = ( x - 0.5) * ( x- 0.5) + ( y - 0.5) * ( y - 0.5) ;
if (dist < 0.25 ) cnt ++;
}
ggbApplet.setValue( "cntpt" , cnt );
문제는 제곱을 표시할 때 ^2 와 같이 표시한 것으로 생각됩니다.
여기에서는 직접 두번 곱하여 해결하였습니다.
또한 점의 이름을 설정할 때 i 주변에 중괄호를 설정하여 점 이름이 의도대로 잘 설정될 수 있도록 하였습니다.
맨 마지막에는 지오지브라 애플릿의 cntpt 라는 변수에 cnt의 값을 입력하도록 하였습니다.