Contents

[-]
1 문제
2 T-SQL로 구현
3 참고자료


1 문제 #

반지름이 100인 원이 있다.
원에 십자가를 그어 1/4의 호를 만든다. (2사분면)
난수 2개(x,y)를 발생시켜 0점으로부터 호를 벗어나는지 벗어나지 않는지를 좌표를 찍는다.
피타고라스 정리에 의해 x^2 + y^2 = z^2 이니까 sqrt(z^2)을 하면 점이 원점으로부터 100을 넘어가는지 안넘어가는지 알 수 있다.
이를 10000회 반복하여 대충의 원주율을 구한다.

pi.png


2 T-SQL로 구현 #

declare 
    @i int
,   @x float
,   @y float
,   @r int
,   @in_count float
,   @out_count float

set @r = 100
set @i = 1
set @in_count = 0
set @out_count = 0

while(@i <= 10000)
begin
    set @x = rand() * @r
    set @y = rand() * @r
    if sqrt(@x*@x + @y*@y) > @r 
        set @out_count += 1
    else
        set @in_count += 1

    set @i += 1
end

print @in_count/@i * 4 --2사분면만 사용했으므로 4를 곱해준다.

난 3.16128 나왔다.
우리가 알고 있는 pi값인 3.141592와 비스무리하다.

3 참고자료 #