|
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번정도까지 계속 같은값
: 그리고 또 값이 한번 바뀐다음에 또 같은값만 계속 나오는
: 이상한 일이 일어나네요.
:
: 혹시 제가 무엇을 잘못했는지 궁금합니다.
|