下手な鉄砲の利用法 [BASIC]
下手な鉄砲として、横0.0~1.0,縦0.0~1.0の正方形に、一様に弾があたる場合を想定します。XとYを乱数(0以上1未満)で求めた座標で、原点(0,0)からの距離が1.0未満の場合に、POINTをPLOTします。
1000万回で何回PLOTしたのかをカウントし、その値を1000万で割って4倍した値が円周率の値にどこまで近づくのか試してみました。
3.141までしか計算できていません。
なかなか思ったようにはいかないものですね…^^;
(by 心如)
─────
REM *** モンテカルロ法による円周率の計算 ***
RANDOMIZE
OPTION ANGLE DEGREES
SET WINDOW -0,1,0,1
DRAW GRID (0.1,0.1)
FOR I = 0 TO 90
PLOT LINES : COS(I),SIN(I);
NEXT I
SET POINT STYLE 1
LET C = 0
LET N = 10000000
FOR I = 1 TO N
LET X = RND
LET Y = RND
LET R = SQR(X^2 + Y^2)
IF R >= 1.0 THEN 10
LET C = C + 1
SET POINT COLOR INT(X*50)+INT(Y*50)+2
PLOT POINTS: X,Y
10 NEXT I
PRINT "R < 1.0"
PRINT C;"回 /"; N
LET P = 4 * C / N
PRINT "=";P
END
─────
コメント 0