목차
C언어 작성한 일양난수 생성기 입니다
I_n = (I_n-1 * a + c) mod m
위의 식을 통해 난수를 생성하게 되는데요
사용자로 부터 seed 값(I_0)과 a, c, m 값을 입력 받고
원하는 갯수만큼의 난수를 생성하던지
아닌면 난수가 나오는 주기를 찾아서 출력하는 동작을 하게 됩니다.
각 난수들을 구조체로 선언해 다음 생성되는 난수를 가리키도록 하였습니다.
레포트 과제에는 난수의 관한 분석이 들어있는데 그 문제는 아래와 같습니다.
1. m의 값이 2^3, 2^4, 2^8, 2^9, 2^10 인 경우에 대해서 다음을 조사하여 보고하시오.
(단, 각각에 대해서 a와 c의 값은 적당히 정하고, 그 값을 보고하시오.) 각 m값에 대해서 위에서 만든 난수발생기가 만들어내는 주기가 얼마인지 보고하시오.
2. 위에서 만든 난수발생기가 생성하는 수들의 평균, 분산, 왜도, 첨도를 조사하여라. (단, 각 m값에 대해서 발생시킬 난수의 개수는 5, 10, 30, 50 으로 하시오.) 각 경우에 대해서 seed를 다르게 주면서, 5번씩 난수를 발생시키고 각각의 평균, 분산, 왜도, 첨도가 어떻게 달라지는지 보고하시오.
압축파일에 소스코드와 한글파일 같이 첨부하였습니다
I_n = (I_n-1 * a + c) mod m
위의 식을 통해 난수를 생성하게 되는데요
사용자로 부터 seed 값(I_0)과 a, c, m 값을 입력 받고
원하는 갯수만큼의 난수를 생성하던지
아닌면 난수가 나오는 주기를 찾아서 출력하는 동작을 하게 됩니다.
각 난수들을 구조체로 선언해 다음 생성되는 난수를 가리키도록 하였습니다.
레포트 과제에는 난수의 관한 분석이 들어있는데 그 문제는 아래와 같습니다.
1. m의 값이 2^3, 2^4, 2^8, 2^9, 2^10 인 경우에 대해서 다음을 조사하여 보고하시오.
(단, 각각에 대해서 a와 c의 값은 적당히 정하고, 그 값을 보고하시오.) 각 m값에 대해서 위에서 만든 난수발생기가 만들어내는 주기가 얼마인지 보고하시오.
2. 위에서 만든 난수발생기가 생성하는 수들의 평균, 분산, 왜도, 첨도를 조사하여라. (단, 각 m값에 대해서 발생시킬 난수의 개수는 5, 10, 30, 50 으로 하시오.) 각 경우에 대해서 seed를 다르게 주면서, 5번씩 난수를 발생시키고 각각의 평균, 분산, 왜도, 첨도가 어떻게 달라지는지 보고하시오.
압축파일에 소스코드와 한글파일 같이 첨부하였습니다
본문내용
난수생성기 소스코드
#include
#include
#include
typedef struct node{ //링크드리스트 구현을 위한 구조체 변수 선언
int index;
long data;
struct node *next;
}node;
void print_node(node *a){ //발생된 난수 출력
if(a->next!=NULL)
print_node(a->next);
printf("%d : %ld\n", a->index, a->data);
return;
}
void free_node(node *a){ //할당 메모리공간 반환
if(a->next!=NULL)
free_node(a->next);
free(a);
return;
}
#include
#include
#include
typedef struct node{ //링크드리스트 구현을 위한 구조체 변수 선언
int index;
long data;
struct node *next;
}node;
void print_node(node *a){ //발생된 난수 출력
if(a->next!=NULL)
print_node(a->next);
printf("%d : %ld\n", a->index, a->data);
return;
}
void free_node(node *a){ //할당 메모리공간 반환
if(a->next!=NULL)
free_node(a->next);
free(a);
return;
}