\newcount\N \N=1000000 % 총시행횟수. 10^n \newcount\n \n=0 % 현재시행횟수 \newcount\hit \hit=0 % Hit \newcount\rr \rr\numexpr10000*10000\relax % 상수 r^2 \newcount\p \newcount\q % 난수 담을 변수 \def\rand#1{#1=\pdfuniformdeviate10001\relax} % 난수 발생기 \def\dmark#1{#1.} % 소수점 찍기 \loop \rand\p \rand\q \ifnum\numexpr\p*\p+\q*\q\relax>\rr\else\advance\hit by1\fi \ifnum\n<\N\advance\n by1 \repeat $$ \pi \approx \expandafter\dmark\the\numexpr4*\hit\relax $$ \bye
아래 도은이아빠 글을 보고 자원 소모가 많은 소수점 연산을 안 써도 얼추 가능할 거 같아서 간단히 작성해봤다.
첫줄의 \N
은 10의 제곱수라야 한다. 이 값을 증가시키면 파이 값이
더 정확해진다.
위의 예처럼 1백만 번까지는 그럭저럭 즐겁게 컴파일할 수 있지만 0을 하나 더 붙여 1천만 번을 돌리면 기다리기가 사뭇 지겹다.
굳이 레이텍으로 만들 이유가 없기에 플레인텍으로 작성했다. pdftex 으로
컴파일하면 된다.
KTUG 한국 텍 사용자 그룹