srand() 인자값을 time() 말고 다른걸 줄순 없나요?

facered79의 이미지

보통 time()을 인잘로 주는데

만약 랜덤 함수를 while 을 이용한 무한루프로 돌렸을경우

일초내의 랜덤수들은 모두 같은값만 나오게 되는데..

이걸 방지하기 위해 사용할 수 있는 방법으로 어떤 것이 있나요..

happyjun의 이미지

보통 srand() 는 처음 실행시에만 한번 해주시면 됩니다. random seed 를 매번 바꿔줄 필요가 없습니다.

----------------------------------------
http://moim.at
http://mkhq.co.kr

kslee80의 이미지

srand() 와 rand() 함수를 혼동하시는듯 싶군요....
그것부터 명확히 알아 보셔야 할듯...

rand() 의 경우에는 주어진 seed 값을 이용해서 랜덤 값을 만들어 냅니다.
srand() 는 rand() 에서 사용할 seed 값을 셋팅합니다.

즉, 실제로 랜덤 값을 리턴하는 것은 srand() 함수가 아닌 rand() 함수입니다.

익명 사용자의 이미지

1. secure Pseudo Random Number Generator
2. secure PRNG
3. 그외 암호화 관련 라이브러리들
4. 그외 오픈 소스 검색

* 참고 : 약 2년전 Fedora 1 vs. OpenBSD vs. FreeBSD가 라이브러리 시스템 호출로 제공하는 rand()를 수천개 생성하는 벤치마킹을 해본결과, 특정, 시스템의 랜덤 수 구현이 좀~ (아니 많이...) 느린것을 알 수 있었습니다.
타임크리티컬한 응용에서는 아주 문제될 정도로 말이지요.
그 당시운영체제를 바꿀수는 없는 상황이라, random함수를 새로 만들어서 썼다는...

* 랜덤은 프로그래머가 자신의 목적에 맞게, 그냥 만들어 쓰는게 좋겠다는 생각을 가지고 있습니다. 물론 다 만들 필요없이, 잘~ 만들어진 오픈 소스 검색해서 사용하는것도 좋겠지요.

* 때에 따라, 생성될 랜덤 숫자들의 통계적 분포가 normal, poison 분포등을 갖게 하는것도 시뮬레이션에선 좋겠지요.

익명 사용자의 이미지

time...정도를 seed로 가지는 정도로는 안전하지 않습니다.
srand()를 사용하고, rand()를 호출하는 것도 일반적( 다수 운영체제를 볼때) 으로
안전하지 않다는게 정설입니다.

안전한 랜덤 수 생성을 위해서는 secure pseudo random number generator
또는 secure PRNG등의 검색어로 검색해 보시기 바랍니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.