배열에 난수을 넣으려고 합니다. 정렬에 대해서 공부을 하는 중이라서요... 정렬할 값들을 난수을 발생시켜 정렬을 하려고 하는데 잘 되지 않네요.
rand()
라는 함수을 이용해서 값을 넣으니까 난수가 만들어지기는 하지만 예을 들어 1부터 10사이의 난수의 발생이라든가 1부터 100 사이의 난수의 발생과 같은건 어떻게 처리을 해야 할지요?
첨으로 글을 써보는군요..
저번에 비슷한 것을 해봐서요..
우선은 rand()함수를 사용하면 계속 같은 패턴으로 난수가 발생됩니다.
그건 seed값이라는 인자가 같아서 그런걸로 알고 있습니다. 그래서 우선 ...
srand( (unsigned)time( NULL ) );
이런식으로 seed값을 새로이 지정해 주는 코드를 넣습니다. 그리고 나서 이건 좀 꽁수지만..
rand() % 10 이렇게 하면 0부터 9까지의 값들이 발생됩니다.
1부터 10까지 하고 싶으면 ( rand()% 10) + 1 이렇게 하면 1부터 10까지의 값들이 발생됩니다.
stdlib.h에 random(int num); 이라는 함수가 있는데 이 원형이
#define random(num) (rand()%(num)); 이렇게 정의 되어있습니다.
stdlib.h 와 time.h를 include해 주심 됩니다. 답변이 되었으면 좋겠습니다.
( rand()% 10) + 1 이렇게 하면 1부터 10까지의 값들이 발생됩니다.
난수의 정밀성이 많이 필요하지 않은 경우에는 이렇게 해도 큰 상관은 없지만, 이 방법은 rand()로 구한 난수의 하위 비트의 내용만 사용하는 것이 되어 난수의 질이 크게 떨어지게 됩니다.
1+(int) (10.0*rand()/(RAND_MAX+1.0))
이런 식으로 사용해야 합니다.
제 stdlib.h에 있는 GNU C library의 random의 정의는 다음과 같습니다.
extern long int random (void) __THROW; 위의 정의는 VC++에 있는 것 같군요.
extern long int random (void) __THROW;
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
첨으로 글을 써보는군요..저번에 비슷한 것을 해봐서요..우
첨으로 글을 써보는군요..
저번에 비슷한 것을 해봐서요..
우선은 rand()함수를 사용하면
계속 같은 패턴으로 난수가 발생됩니다.
그건 seed값이라는 인자가 같아서 그런걸로 알고 있습니다.
그래서 우선 ...
srand( (unsigned)time( NULL ) );
이런식으로 seed값을 새로이 지정해 주는 코드를 넣습니다.
그리고 나서 이건 좀 꽁수지만..
rand() % 10 이렇게 하면 0부터 9까지의 값들이 발생됩니다.
1부터 10까지 하고 싶으면
( rand()% 10) + 1 이렇게 하면 1부터 10까지의 값들이 발생됩니다.
stdlib.h에 random(int num);
이라는 함수가 있는데 이 원형이
#define random(num) (rand()%(num));
이렇게 정의 되어있습니다.
stdlib.h 와 time.h를 include해 주심 됩니다.
답변이 되었으면 좋겠습니다.
특정 범위의 난수..
난수의 정밀성이 많이 필요하지 않은 경우에는 이렇게 해도 큰 상관은 없지만, 이 방법은 rand()로 구한 난수의 하위 비트의 내용만 사용하는 것이 되어 난수의 질이 크게 떨어지게 됩니다.
1+(int) (10.0*rand()/(RAND_MAX+1.0))
이런 식으로 사용해야 합니다.
random?
제 stdlib.h에 있는 GNU C library의 random의 정의는 다음과 같습니다.
extern long int random (void) __THROW;
위의 정의는 VC++에 있는 것 같군요.댓글 달기