난수 만들기?

hurryon의 이미지

배열에 난수을 넣으려고 합니다. 정렬에 대해서 공부을 하는 중이라서요...
정렬할 값들을 난수을 발생시켜 정렬을 하려고 하는데 잘 되지 않네요.

rand()

라는 함수을 이용해서 값을 넣으니까 난수가 만들어지기는 하지만
예을 들어 1부터 10사이의 난수의 발생이라든가 1부터 100 사이의 난수의
발생과 같은건 어떻게 처리을 해야 할지요?

iwidwh의 이미지

첨으로 글을 써보는군요..

저번에 비슷한 것을 해봐서요..

우선은 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해 주심 됩니다.
답변이 되었으면 좋겠습니다.

eungkyu의 이미지

iwidwh wrote:
( rand()% 10) + 1 이렇게 하면 1부터 10까지의 값들이 발생됩니다.

난수의 정밀성이 많이 필요하지 않은 경우에는 이렇게 해도 큰 상관은 없지만, 이 방법은 rand()로 구한 난수의 하위 비트의 내용만 사용하는 것이 되어 난수의 질이 크게 떨어지게 됩니다.

1+(int) (10.0*rand()/(RAND_MAX+1.0))

이런 식으로 사용해야 합니다.

cdpark의 이미지

제 stdlib.h에 있는 GNU C library의 random의 정의는 다음과 같습니다.

extern long int random (void) __THROW; 위의 정의는 VC++에 있는 것 같군요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.