C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[6598] Re:이 프로그램 의미가 머죠??
인디오 [] 2328 읽음    2001-04-04 15:48
이정훈 님이 쓰신 글 :
: 이건 씨언어에서 사용한 건데요..아무리 봐도 의미를 모르겠네요.
: 굳이 랜덤 함수를 사용할때 다음과 같이 써야하는 이유를요..
:
: double rnd(double * r_seed)
: {
:
:    *r_seed=fmod(A*(*r_seed),B);
:
:    return((*r_seed)*4.656612875e-10;
: }
:
: 이렇게 구한답니다
: 어떤 책에 보니깐 랜덤 number generator 구할때 사용하더라구요
: A=16807.0 , B=2147483647.0 이랍니다.
: 이렇게 큰수로 구하는 이유가 먼가요?? 그리고 r_seed 값은 1입니다.
:
: r_seed의 의미도 잘 모르겠어요........포인터를 쓰면 머가 달라지는지도 가르쳐주세요.
:
: 걱정입니다..넘넘 어려워요.
:
:

안녕하세요.. 오늘은 본의 아니게 님 질문에만 답을 하게 되는군요... 저도 빌더 초보라 T.T
위의 경우는 저도 정확하게 아는 것은 아닙니다만...
일단 위의 경우 r_seed 값이 1이라고 하셨는데요... 제가 알기로는 r_seed 값이 고정이면 리턴 되는 값
역시 하나의 숫자로만 계속 나오는 것으로 알고 있습니다.. 님의 소스를 테스트 해 보니까 역시나 계속
같은 값이 나오더군요...
제가 보기에는 위의 함수는 랜덤 함수를 설명하기 위한 함수가 아닌가 생각이 듭니다...

일단 님의 질문을 하나씩 보도록 하죠...
A나 B의 값을 저렇게 큰수로 구하는 이유는 위에서 나머지 모드 fmod() 함수를 사용하기 때문에 나오는
숫자를 다양하게 구하기 위해서 그런것이 아닌가 생각이 듭니다.. 만약 아주 작은 값을 가지고 사용한다면
나머지 모드 함수를 사용했을때 나오는 결과값 역시 나누는 숫자의 범위 내에 있기 때문에 같은 숫자가 중복되어 나오는 경우가 생기죠... 이런것을 방지 하기 위한 것이 아닌가 싶습니다..
그리고 r_seed 값이라는 것은 무엇인고 하니... 일단 seed 라는 것이 씨앗을 말하는 거죠... 그러니까..
위의 함수 rnd(seed) 안에 seed 값을 어떤 것을 넣느냐에 따라 그 함수를 돌고 나면 랜덤으로 다양한 숫자가 나오게 되는 것입니다.. 포인터를 쓰는 이유는 글쎄요.. 꼭 포인터를 사용해야 한다는 것은 아니지만 만약 이 함수를 call 하는 곳에서 어떤식으로 구현을 하느냐에 따라 유연하게 사용하기 위해서 포인터를 사용하는 것이 아닌가 생각이 듭니다... 일단 포인터를 사용하면 함수에 들어갔다가 나와도 함수에서 수행한 이후의 seed 값을 알수가 있을테니까요...

저 같은 경우는 rand 함수를 이렇게 사용합니다.. c 함수에서 지원하는 날짜, 시간 을 사용해서 년도, 월, 일, 시, 분, 초( 이상은 모두 int type, 만약 아니라면 type cast 사용하면 되니까 문제될껀 없습니다. )을 모두 더해서 이것을 seed 값으로 만드는 거죠... 그리고 님의 함수처럼 하나를 만들어서 사용을 하던지 아니면 C 에서 지원하는 rand 함수를 사용해서 인자로 seed 값을 넣으면 다양한 결과의 숫자가 나오는 것으로 알고 있습니다...

설명을 하려고 하다보니까.. 쓸데 없는 말만 있고 도움이 안된것 같습니다.. T.T 죄송합니다..

+ -

관련 글 리스트
6595 이 프로그램 의미가 머죠?? 이정훈 2453 2001/04/04
6598     Re:이 프로그램 의미가 머죠?? 인디오 2328 2001/04/04
6611         Re:Re:이 프로그램 의미가 머죠?? 정후니 2223 2001/04/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.