관리 메뉴

드럼치는 프로그래머

[C/C++] rand()함수.. 범위가 작구나 -> n * rand ( ) / RAND_MAX + 1 본문

★─Programing/☆─C | C++

[C/C++] rand()함수.. 범위가 작구나 -> n * rand ( ) / RAND_MAX + 1

드럼치는한동이 2009. 2. 3. 11:07

25개의 숫자를 빙고게임을 구현하는동안 rand() % 24 + 1 로 구현하였는데,

동일 숫자만 반복되는걸 보았고, 실행속도가 조금 느린거 같아서 좀 알아보았다.
 
rand() 함수는 RAND_MAX (32767) 까지의 숫자가 난수발생한다고 한다.

25개의 숫자를 뽑는 코드를 바꿔보았다.


srand ( ( unsigned int ) time ( NULL ) );
 
for ( i = 0; i < ____MAX_SIZE___; cnt = 0, i++ )
 {
  Temp [ i ] =  25 * rand ( ) / RAND_MAX + 1;

  for ( j = 0; j < i; j++ )
  {
   if ( Temp [ i ] == Temp [ j ] )
   {
    cnt++;
    break;
   }
  }
  
  if ( cnt ) i--;
 }


돌아간다!!  - -;;

[참고] rand() % M  <  사용하지말라!!

Comments