n번째의 난수를 생성하기 위해 제곱근의 소수점 아래 첫번째 자리를 이용할 수 있을지 확인하기 위해, 1부터 100000까지의 제곱근 소수점 아래 첫번째 자리 수를 구해 출현 빈도를 출력하는 프로그램을 만든 적이 있었습니다.
대충 빈도가 비슷하게 나오더군요...
대충 빈도가 비슷하게 나오더군요...
C 소스입니다..#include<stdio.h>
int sqrt(int b);
int main(void)
{
int static a[10]; //a[n]:소수점 아래 숫자가 n인 경우의 수
int sqr, cnt;
for(cnt=0;cnt<100000;cnt++) //100000회 반복
{
sqr=sqrt(cnt);
a[sqr]++;
}
for(cnt=0;cnt<10;cnt++) printf ("%d: %d \n",cnt,a[cnt]);
}
int sqrt(int n)
{
int length=10,a;
float sqrt;
for(a=0,sqrt=n;a<=(length/2);a++)//1번 수행마다 유효숫자 2자리 증가
sqrt=(sqrt+(float)(n/sqrt))/2;//이 수열은 제곱근에 수렴.
return(((int)(sqrt*10))%10);//제곱근의 소수점 아래 첫번째 숫자 반환
}