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()로 랜덤값을 다시 곱해줘 버렸더니 제대로 나온다.
하지만 필요에 따라 이보다 큰 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()로 랜덤값을 다시 곱해줘 버렸더니 제대로 나온다.



