반지름이 100인 원이 있다. 원에 십자가를 그어 1/4의 호를 만든다. (2사분면) 난수 2개(x,y)를 발생시켜 0점으로부터 호를 벗어나는지 벗어나지 않는지를 좌표를 찍는다. 이를 1000회 반복하여 대충의 원주율을 구한다. 이를 100회 시행하여 그 평균을 구해보자. 거의 원주율(3.14)에 가까울 것이다.
SET NOCOUNT ON
SET STATISTICS io OFF
DECLARE
@rs FLOAT
, @i INT
, @j INT
, @t FLOAT
, @r FLOAT;
DROP TABLE #Temp
CREATE TABLE #Temp(PI float);
SET @r = 100; --반지름
SET @rs = 0;
SET @i = 1;
SET @j = 1;
BEGIN TRAN
WHILE(@i <= 100)
BEGIN
WHILE(@j <= 10000)
BEGIN
SET @t = CONVERT(DECIMAL(18,2), RAND()) * CONVERT(DECIMAL(18,2), RAND()) * 10000
IF @t <= (PI() * POWER(@r, 2) / 4)
SET @rs = @rs + (@t/4)
SET @j = @j + 1
END
INSERT #Temp VALUES(POWER(@rs, -2))
SET @i = @i + 1
END
COMMIT;
SELECT AVG([PI]) FROM #Temp
/*
몇 번 실행해 보면 원주율이 2후반 ~ 3초반 인 것을 알 수 있다.
불확실성을 이용한 확률..
*/