검색어 'srand()'에 대한 1 개의 검색 결과

  1. 2009/11/06 rand() 범위 재정의 by dhappy

rand() 범위 재정의

2009/11/06 17:03 / 컴퓨터
rand()는 32767까지를 반환한다.
하지만 필요에 따라 이보다 큰 rand값을 구해야 한다.

random()을 새로 만든다.

먼저 MAX값 설정
------------------------------------
#define _RAND_MAX_PORT 0xFFFF  //0~65535
#define _RAND_MAX_IP 0xFFFFFFFF //0~4294967295
long RandSeed = 1;
------------------------------------

다음으로 random함수를 새로 만든다.
------------------------------------
long random(CString what)
{
 RandSeed = rand()*RandSeed * 1103515245 + 12345;
 if(what =="port")
  return ((RandSeed)&_RAND_MAX_PORT);
 else
  return ((RandSeed)&_RAND_MAX_IP);
}
------------------------------------
IP와 PORT의 범위를 다르게 해주었다.

원래  RandSeed = RandSeed * 1103515245 + 12345;
였는데 이렇게 하니까 random값이 제대로 안나오고 일정한 주기로 나눠져서 나오는 현상이 생겼다
그래서 앞에 rand()로 랜덤값을 다시 곱해줘 버렸더니 제대로 나온다.


2009/11/06 17:03 2009/11/06 17:03
dhappy 이 작성.