디지털통신시스템설계 (2주차 예비보고서)
- 최초 등록일
- 2014.12.06
- 최종 저작일
- 2013.09
- 8페이지/ MS 워드
- 가격 1,000원
소개글
수정할 곳 없는 정말 완벽한 보고서입니다.
보고서 쓰시는데 도움이 되었으면 좋겠습니다.
목차
1. C++에서 난수를 발생하는 함수를 찾아서 나열하라.
2. 난수 발생 함수에서는 seed가 필요하다. Seed의 역할이 무엇인가?
3. 1~20 사이 uniform분포를 갖는 난수를 만들고자 한다. rand() 함수를 이용하여 상기 분포를 갖는 난수 발생기를 만들어보아라.
4. 평균 4를 갖는 지수분포의 pdf와 cdf 수식은 무엇인가? Matlab을 이용하여 pdf와 cdf를 그려라. 또한 pdf 수식을 이용하여 평균 및 분산을 구하라.
본문내용
C++에서의 Rand 함수는 random number들을 발생시키는 역할을 합니다. 그러나 프로그램에서의 rand 함수는 완벽한 random은 아니고, 일정한 한계가 있는 의사 난수(Pseudo-Random Number)입니다. 왜냐하면 이 함수는 C++에 내장된 난수표에 있는 수를 가져올 뿐이기 때문에 일정한 수를 출력하게 됩니다. 또한 rand 함수를 사용하여 불러낸 숫자는 0~RAND_MAX 범위 내에 존재하게 되는데, 일반적으로 0~32767 (0x7ffff)안에 정의됩니다. 그래서 rand 함수를 호출하면 0부터 32767중의 임의의 정수 하나가 return 되게 됩니다. 그리고 rand 함수를 사용하기 위해서는 rand 함수를 정의해 놓은 헤더 파일인 stdlib.h를 정의시켜줘야 합니다.
<중 략>
그래서 이를 방지하기 위해 난수 생성기에게 전달되는 시작점 또한 예측 불가능한 난수를 사용하게 되는데 이 때 시작점으로 사용할 수 있는 난수가 바로 시간입니다. 시간을 이용하여 난수를 발생시킨다면 완전한 난수를 만들 수 있습니다. time 함수는 현재 시간을 나타내는 정수 값을 리턴 하는데 이 값을 시작점으로 사용하면 프로그램이 실행될 때마다 완전히 다른 난수를 만들어낼 수 있습니다. time 함수의 대용으로 GetTickCount라는 API함수를 사용할 수 있는데 이 함수는 시스템이 부팅된 후 경과된 시간을 리턴 하므로 시작점으로 쓰기에 적합하지만 윈도우즈 API 함수를 사용하면 이식성이 떨어지는 단점이 있습니다. clock 이라는 함수도 시작점으로 사용할 수 있습니다.
참고 자료
난수 함수 http://www.winapi.co.kr/clec/cpp1/8-2-1.htm