목차
1.결정적 시뮬레이션과 확률적 시뮬레이션에 대한 이론에 대하여 서술
2.결정적 시뮬레이션에 대한 예인 복리 이자에 대한 실행코드, 실행화면 그리고 그래프 삽입과 설명
3.확률적 시뮬레이션에 대한 예인 주사위 문제에 대한 실행코드, 실행화면 삽입과 설명
4.결론과 느낀점
5.구현 환경, 참고문헌, 참고한 홈페이지
2.결정적 시뮬레이션에 대한 예인 복리 이자에 대한 실행코드, 실행화면 그리고 그래프 삽입과 설명
3.확률적 시뮬레이션에 대한 예인 주사위 문제에 대한 실행코드, 실행화면 삽입과 설명
4.결론과 느낀점
5.구현 환경, 참고문헌, 참고한 홈페이지
본문내용
ear%5==0) //5의 배수를 찍어내기 위해 표현
printf("%d %0.1f %0.1f \n",year,salary*1000,savings*1000);
//소수점 첫 번 째 자리까지 찍어내기 위해 표현
}
return 0;
}
◎ 실행화면
SALARY값과 SAVINGS 값이 프로그래밍 때문에 반올림 되지 않은 값으로 나오는 현상을 가지게 되었습니다.
◎그래프
년도와 연봉 그래프
1200000.0
0
1846348.7
5
2840836.4
10
4370979.0
15
6725292.9
20
10347696.8
25
15921214.8
30
년도와 이자 그래프
0.0
0
801593.5
5
2306063.9
10
4983697.1
15
9589101.2
20
17324839.8
25
30096749.2
30
◎확률적 시뮬레이션 (주사위 문제)
-확률변수(random variable) 사용
-프린트에 나와 있는 난수 발생기 프로그램을 사용함
◎확률적 시뮬레이션 (주사위 문제) 실행 코드
#include
#include
void my_Random(int* n, float* u)
{
*n = (*n * 843314861) + 453816693;
if (*n < 0)
{
*n = *n + 2147483647 + 1;
}
*u = *n * 0.4656612 * 0.000000001;
} //프린트에 나와있는 난수 발생기 사용
int main()
{
int count[7] = {0,};
int nrolls, seed;
int i=0;
int side;
float u = 0.5;
scanf( "%d %d", &nrolls, &seed);
//srand(seed);
for( i=0; i<6; ++i)
{
count[i] = 0;
}
for(i=0; i
{
my_Random(&seed, &u);
side = (int)(u * 6);
//side = (rand() % 6); //라이브러리에 있는 랜덤함수를 사용해도
count[side] += 1; //난수를 발생할 수 도 있다.
}
for( i=0; i<6; ++i )
printf("%d : %d\n", i+1, count[i] );
return 0;
}
◎난수 발생기 사용 방법
위에서 사용한 random number generator는 int의 성질을 이용하여 오버플로우가 발생하게 만든 다음에 숫자를 계속 바꾸는 것으로 난수를 발생할 수 있게 만든 것이다. 하지만 다른 방법으로 이미 라이브러리에 지정되어있는 rand()함수를 사용하여도 난수를 발생 할 수 있는데 이것의 원리는 난수표에 있는 난수중 하나를 사용하도록 만들어 난수를 발생할 수 있도록 한다. 이외에도 만들기만 한다면 많은 난수 발생기를 만들 수 있다.
◎실행화면 <입력값 횟수,seed값> seed값은 일정하게 넣어주었다.
<입력값 10,12717>
<입력값 100,12717>
<입력값 1000,12717>
<입력값 3000,12717>
<입력값 10000,12717>
<입력값 100000,12717>
-횟수를 10에서부터 100000만 까지 다양한 수로 넣어보니 처음에는 그 확률이 크고 작은 것이 차이가 많이 나기도 하고 많이 나지도 않기도 하며 들쑥날쑥 기복이 많이 커 보였지만 점점 큰 숫자를 대입할수록 그 확률은 거의 고루게 분포 되었고 약간의 차이는 있지만 그 큰 숫자에 비해 작은 숫자들은 많은 영향을 주지 않을 정도였다.
◎ 결론
우선, 위에서 서술 했듯이 결정적 시뮬레이션(deterministic simulation)은 주어진 입력변수에 대한 결과가 항상 동일하도록 각각의 작용, 값, 사건 등에 대한 입력 변수와 출력 결과간에 고정된 관계가 주어지는 모의 실험이기 때문에 확실한 값을 구하기 위하여 쓸수 있는 반면에 확률적 시뮬레이션은 주어진 입력변수에 대한 결과가 항상 동일하지 않고 항상 다르게 나온다. 하지만 이 것을 사용하여 몸소 시도해 보지 않아도 그 결과 값을 예측하는 방도로 사용할 수 있다. 이 예측을 사용하여 많은 문제들을 쉬운 방법으로 많은 에너지를 들이지 않고도 쉽게 접근할 수 있다. 그리고 결정적 시뮬레이션에서 프로그래밍언어를 사용하였을 때 약간의 숫자가 다른 것을 확인 할 수 있는데 이 오차는 큰 차이가 아니라 반올림을 하지 않은 수로 볼 수 있기 때문에 무시 하였고 확률적 시뮬레이션의 예제 문제인 주사위 문제에 프린트에서 나와 있는 난수 발생기 프로그램을 사용하여 난수를 발생하였는데 이 숫자는 일정한 수를 만들어내어 숫자를 만들어 내는 것이므로 추측을 하여 그 수를 알아낼 수 있을지도 모른다는 생각을 하게 되었다. 그리고 주사위 문제에 대하여 많은 숫자를 대입하여 그 확률을 비교해 보았는데 처음에는 숫자가 큰 차이가 나는 듯했지만 큰 숫자를 대입 할수록 점점 숫자에 오차가 적어지며 숫자가 고르게 되는 것을 확인하게 되었다.
◎느낀점
1년 동안이라는 시간 후에 복학을 하여 처음 해본 보고서였기 때문에 어려움도 많았고 시간도 많이 걸렸기 때문에 더욱 열심히 하여야 하겠다는 생각을 하게 되었습니다. 그리고 이번 레포트를 준비하며 시스템으로 인한 성능 분석이 왜 중요한 것인지 그리고 또한 그 방법들도 다양하다는 생각을 하게 되었습니다. 무엇보다도 만약 이 확률적 시뮬레이션을 사용하지 않고 주사위를 100000번을 던져서 그 확률을 찾고 있었다고 생각하면 그 시간과 육체적인 피로는 생각하기도 싫다는 생각을 하였습니다. 그리고 빠른 시간에 확률적인 시뮬레이션으로 추측을 할 수 있기 때문에 그 효율은 어떻게 사용 하느냐에 따라 큰 효과를 볼 수 있을것이라고 생각합니다.
◎ 구현 환경
- Microsoft Visual C++2010 EXPRESS
◎ 참고 문헌
-열혈 C프로그래밍 윤성우 저
-열혈 자료구조 윤성우 저
-난 정말 JAVA를 공부한 적 없다구요 윤성우 저
◎ 사이트
-www.naver.com
-blog.naver.com/wjdrmsghl?Redirect=Log&logNo=50107790414
-http://subiz_atman.blog.me/150089022966
printf("%d %0.1f %0.1f \n",year,salary*1000,savings*1000);
//소수점 첫 번 째 자리까지 찍어내기 위해 표현
}
return 0;
}
◎ 실행화면
SALARY값과 SAVINGS 값이 프로그래밍 때문에 반올림 되지 않은 값으로 나오는 현상을 가지게 되었습니다.
◎그래프
년도와 연봉 그래프
1200000.0
0
1846348.7
5
2840836.4
10
4370979.0
15
6725292.9
20
10347696.8
25
15921214.8
30
년도와 이자 그래프
0.0
0
801593.5
5
2306063.9
10
4983697.1
15
9589101.2
20
17324839.8
25
30096749.2
30
◎확률적 시뮬레이션 (주사위 문제)
-확률변수(random variable) 사용
-프린트에 나와 있는 난수 발생기 프로그램을 사용함
◎확률적 시뮬레이션 (주사위 문제) 실행 코드
#include
#include
void my_Random(int* n, float* u)
{
*n = (*n * 843314861) + 453816693;
if (*n < 0)
{
*n = *n + 2147483647 + 1;
}
*u = *n * 0.4656612 * 0.000000001;
} //프린트에 나와있는 난수 발생기 사용
int main()
{
int count[7] = {0,};
int nrolls, seed;
int i=0;
int side;
float u = 0.5;
scanf( "%d %d", &nrolls, &seed);
//srand(seed);
for( i=0; i<6; ++i)
{
count[i] = 0;
}
for(i=0; i
my_Random(&seed, &u);
side = (int)(u * 6);
//side = (rand() % 6); //라이브러리에 있는 랜덤함수를 사용해도
count[side] += 1; //난수를 발생할 수 도 있다.
}
for( i=0; i<6; ++i )
printf("%d : %d\n", i+1, count[i] );
return 0;
}
◎난수 발생기 사용 방법
위에서 사용한 random number generator는 int의 성질을 이용하여 오버플로우가 발생하게 만든 다음에 숫자를 계속 바꾸는 것으로 난수를 발생할 수 있게 만든 것이다. 하지만 다른 방법으로 이미 라이브러리에 지정되어있는 rand()함수를 사용하여도 난수를 발생 할 수 있는데 이것의 원리는 난수표에 있는 난수중 하나를 사용하도록 만들어 난수를 발생할 수 있도록 한다. 이외에도 만들기만 한다면 많은 난수 발생기를 만들 수 있다.
◎실행화면 <입력값 횟수,seed값> seed값은 일정하게 넣어주었다.
<입력값 10,12717>
<입력값 100,12717>
<입력값 1000,12717>
<입력값 3000,12717>
<입력값 10000,12717>
<입력값 100000,12717>
-횟수를 10에서부터 100000만 까지 다양한 수로 넣어보니 처음에는 그 확률이 크고 작은 것이 차이가 많이 나기도 하고 많이 나지도 않기도 하며 들쑥날쑥 기복이 많이 커 보였지만 점점 큰 숫자를 대입할수록 그 확률은 거의 고루게 분포 되었고 약간의 차이는 있지만 그 큰 숫자에 비해 작은 숫자들은 많은 영향을 주지 않을 정도였다.
◎ 결론
우선, 위에서 서술 했듯이 결정적 시뮬레이션(deterministic simulation)은 주어진 입력변수에 대한 결과가 항상 동일하도록 각각의 작용, 값, 사건 등에 대한 입력 변수와 출력 결과간에 고정된 관계가 주어지는 모의 실험이기 때문에 확실한 값을 구하기 위하여 쓸수 있는 반면에 확률적 시뮬레이션은 주어진 입력변수에 대한 결과가 항상 동일하지 않고 항상 다르게 나온다. 하지만 이 것을 사용하여 몸소 시도해 보지 않아도 그 결과 값을 예측하는 방도로 사용할 수 있다. 이 예측을 사용하여 많은 문제들을 쉬운 방법으로 많은 에너지를 들이지 않고도 쉽게 접근할 수 있다. 그리고 결정적 시뮬레이션에서 프로그래밍언어를 사용하였을 때 약간의 숫자가 다른 것을 확인 할 수 있는데 이 오차는 큰 차이가 아니라 반올림을 하지 않은 수로 볼 수 있기 때문에 무시 하였고 확률적 시뮬레이션의 예제 문제인 주사위 문제에 프린트에서 나와 있는 난수 발생기 프로그램을 사용하여 난수를 발생하였는데 이 숫자는 일정한 수를 만들어내어 숫자를 만들어 내는 것이므로 추측을 하여 그 수를 알아낼 수 있을지도 모른다는 생각을 하게 되었다. 그리고 주사위 문제에 대하여 많은 숫자를 대입하여 그 확률을 비교해 보았는데 처음에는 숫자가 큰 차이가 나는 듯했지만 큰 숫자를 대입 할수록 점점 숫자에 오차가 적어지며 숫자가 고르게 되는 것을 확인하게 되었다.
◎느낀점
1년 동안이라는 시간 후에 복학을 하여 처음 해본 보고서였기 때문에 어려움도 많았고 시간도 많이 걸렸기 때문에 더욱 열심히 하여야 하겠다는 생각을 하게 되었습니다. 그리고 이번 레포트를 준비하며 시스템으로 인한 성능 분석이 왜 중요한 것인지 그리고 또한 그 방법들도 다양하다는 생각을 하게 되었습니다. 무엇보다도 만약 이 확률적 시뮬레이션을 사용하지 않고 주사위를 100000번을 던져서 그 확률을 찾고 있었다고 생각하면 그 시간과 육체적인 피로는 생각하기도 싫다는 생각을 하였습니다. 그리고 빠른 시간에 확률적인 시뮬레이션으로 추측을 할 수 있기 때문에 그 효율은 어떻게 사용 하느냐에 따라 큰 효과를 볼 수 있을것이라고 생각합니다.
◎ 구현 환경
- Microsoft Visual C++2010 EXPRESS
◎ 참고 문헌
-열혈 C프로그래밍 윤성우 저
-열혈 자료구조 윤성우 저
-난 정말 JAVA를 공부한 적 없다구요 윤성우 저
◎ 사이트
-www.naver.com
-blog.naver.com/wjdrmsghl?Redirect=Log&logNo=50107790414
-http://subiz_atman.blog.me/150089022966
추천자료
부메랑의 Turn Motion 에 대한 역학적 분석 & 컴퓨터 시뮬레이션
소형 로켓 엔진의 추력 측정 및 고도 속도 시뮬레이션
(실험보고서) MOSFET 전압 전류 특성 실험 및 시뮬레이션
(실험 보고서)JFET 공통 소스 증폭기 실험 및 시뮬레이션
[운영체제, C언어] SJF와 SRT 스케쥴링 기법 시뮬레이션
확산(diffusion)에 관한 조사 및 비쥬얼 시뮬레이션
[제어공학]DC모터속도제어에 대한 PID 게인 튜닝(Matlab 시뮬레이션)
[디지털논리회로 실습 보고서] Exclusive-OR 게이트 - 시뮬레이션 결과
C 이용한 QPSK 시스템 AWGN 채널에서의 BER 성능 시뮬레이션
C 이용한 QPSK 시스템 Rayleigh 채널에서의 BER 성능 시뮬레이션
C 이용한 BPSK 시스템 Rayleigh 채널에서의 BER 성능 시뮬레이션
[화공실험] 하이시스(HYSYS) 이용한 공정 시뮬레이션 SIMULATION 결과 : n-Heptane 추출하고 ...
[화공실험] 하이시스(HYSYS) 이용한 공정 시뮬레이션 SIMULATION 예비 : n-Heptane 추출하고 ...
소개글