rand()문의
니지
srand()와 rand()를 이용한 id값 생성srand( (unsigned)time(null) );
int id = rand()%10000;
으로 id값을 생성하는 것은 알겠는데 time을 사용하다 보니 빠른 시간안에 여러개의 id를 생성하게 되면 seed값이
같아져서 결국 id값이 같은 값이 되버리는 경우가 발생합니다.
질문 내용 : 각 id값에 데이터를 저장하고 있고 id값을 호출에 일을 처리할 예정이라 id값이 중복되면 문제가 발생합니다.
그래서 id값이 같은게 있는지 확인하고 겹치는게 있으면 다시 rand()로 새값을 만들려고 하는데
같은 시간대에 id를 여러개 생성하면 이미 다 같은 값을 가져버리네요... init()이란 함수에서 id를 만들게 했는데
유닉스같은 경우 usleep()을 사용해서 시간을 조절해주긴 하는거 같은데 window에선 그런게 없는듯해서요..
예를들면...
int init(){
srand( (unsigned)time(null) );
int id = rand()%10000;
g_id=id;
g_status=hello;
status_info[g_id]=g_status; //mapint g_id,string g_status로 되어있는 형식입니다...
return id;
}
- 1. 유일한 id값을 생성하는 방법...
2. map에서 id값이 겹치지 않게 확인하고 겹치면 다시 id를 만들어 사용하도록....
이 목적입니다... iter = status_info.find(id);
if (iter!= status_info.end()){
id = rand()%10000;
}
를 추가해주려고 했더니 소용없는것 같고 뭔가 잘못한듯...ㅠㅠ
조언부탁드립니다.... ^^ 감샤~