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
[50878] Re:random값에 대해 질문드립니다
장성호 [nasilso] 2186 읽음    2007-10-15 09:25
random함수는 정말로 랜덤한 데이타를 주는 함수가 아니라
굉장히 긴 주기의 함수입니다.

프로그램 시작하면 항상 처음부터 시작하니까...
주기의 시작부터 호출되므로 .. 똑 같은 값이 호출됩니다.

그럼 어떻게 바꿀수 있나?

주기함수의 seed  를 변경하면 됩니다.
srand() 

문론 seed값도  계속 똑같은 값이면 똑같 값이 나오겠죠

그래서 보통 seed값은 시스템의 현재시간을 가지고 설정하곤 합니다.

srand(StrToInt(Now().FormatString("hhnnss"))); //
Memo1->Lines->Clear();
   for(int i=0;i<100;i++)
        Memo1->Lines->Add(IntToStr(random(100)));


개인적으로는 그냥 시간이 아닌 TickCount를 씁니다.

srand(GetTickCount());

그럼..


random에는 seed라
화려한미소 님이 쓰신 글 :
: 저는 아직 초보라고 하기에도 부족한 단계인데요.
:
: 제가
:
: Apoint +=int(random(500));
:
: 이런식으로 랜덤값을 불러서 여러번 반복을 시켜봤더니
: 계속 같은값만 나오더라구요.
: 그래서 검색을 조금 해봤더니
:
: randomize();
: 앞에 선언을 해줘야 값이 바뀐다고 해서
: 해봤는데
:
: randomize();
: Apoint +=int(random(500));
:
: 이렇게 했는데도 계속 같은값을 출력하네요.
:
: 그래서 의문을 가지고 for문으로 100번 정도 돌렸는데
: 100번 돌리는 동안 중간에 잠깐잠깐 값이 바뀌고
: 쉽게 말해 1~30번정도 까지 하고 값이 바뀌고
: 그값으로 쭈욱 30~80번정도까지 계속 같은값
: 그리고 또 값이 한번 바뀐다음에 또 같은값만 계속 나오는
: 이상한 일이 일어나네요.
:
: 혹시 제가 무엇을 잘못했는지 궁금합니다.

+ -

관련 글 리스트
50876 화려한미소 1965 2007/10/15
50885     Re:random값에 대해 질문드립니다 헤이즐넛 1914 2007/10/15
50878     Re:random값에 대해 질문드립니다 장성호 2186 2007/10/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.