10 그리고 3을 입력하면
3 - 4 1 9 3 - 10 2 5 3 - 8 3 6 1 - 7
이렇게 나타내고 싶은데요
rand함수를 써서 하니 중복이 잘되네요..
어떻게 좋은 방법 없을런지 -_-;
srand 에 seed 를 주셨는지요..
초기화라는 말이 어울릴지 모르겠지만 같은 seed값을 이용하기 때문에 같은 결과가 나올겁니다. 랜덤호출후에는 seed 값을 새로 바꿔줘야 올바른 랜덤값이 나오게 됩니다. 아래의 코드를 랜덤함수 호출전에 호출해주시면 됩니다.
srand(time(NULL));
랜덤이라는 것이 진짜 랜덤이 아닙니다.
초기값(즉 seed) 에 어떤 특정한 연산을 취해서 그 값을 얻어내는 것이
random 이죠, 그래서 이 seed가 동일할 경우에는 항상 같은 값이
나오게됩니다. 그럼 고운 하루
========================= CharSyam ^^ --- 고운 하루 =========================
중복이 안되게 저장시킨담에 출력해주면 될꺼 같은데요..^^
=================================================== 중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
그런데 문제는 "중복이 안되게 저장시키는" 방법을 구현하는 것이죠. 이건 STL의 random_shuffle 알고리듬을 사용하면 간단합니다.
//--------------------------------------------------------------------------- #include <iostream> #pragma hdrstop #include <vector> #include <numeric> #include <algorithm> #include <iterator> //--------------------------------------------------------------------------- using namespace std; int main() { vector<int> series(10); iota(series.begin(), series.end(), 1); srand(time(0)); random_shuffle(series.begin(), series.end()); ostream_iterator<int> out(cout, " "); for (vector<int>::iterator j, i = series.begin(); i != series.end(); i = j) { int Count = 0; for (j = i; j != i + 3 && j != series.end(); ++j) ++Count; cout << Count << " - "; copy(i, j, out); cout << endl; } return 0; } //---------------------------------------------------------------------------
초기값(즉 seed) 에 어떤 특정한 연산을 취해서 그 값을 얻어내는 것이 random 이죠
계속 random을 찍다보면 그 값들이 정규 분포를 이룬다는 것을 알수 있습니다.^^ 맞죠?;;
----------- 청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법http://sozu.tistory.com
유닉스 환경이라면 /dev/random 을 쓰시면 더욱 랜덤한 수를 얻을수있습니다.. 지원안되는 OS도 있으니 지원여부를 확인한후 써야되겠죠..
텍스트 포맷에 대한 자세한 정보
<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]
srand 에 seed 를 주셨는지요..
srand 에 seed 를 주셨는지요..
초기화 시켜줘야해요
초기화라는 말이 어울릴지 모르겠지만 같은 seed값을 이용하기 때문에 같은 결과가 나올겁니다.
랜덤호출후에는 seed 값을 새로 바꿔줘야 올바른 랜덤값이 나오게 됩니다.
아래의 코드를 랜덤함수 호출전에 호출해주시면 됩니다.
srand(time(NULL));
랜덤이라는 것이 진짜 랜덤이 아닙니다.초기값(즉 seed) 에 어
랜덤이라는 것이 진짜 랜덤이 아닙니다.
초기값(즉 seed) 에 어떤 특정한 연산을 취해서 그 값을 얻어내는 것이
random 이죠, 그래서 이 seed가 동일할 경우에는 항상 같은 값이
나오게됩니다. 그럼 고운 하루
=========================
CharSyam ^^ --- 고운 하루
=========================
중복이 안되게 저장시킨담에 출력해주면 될꺼 같은데요..^^
중복이 안되게 저장시킨담에 출력해주면 될꺼 같은데요..^^
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
STL의 random_shuffle 알고리듬을 사용하면 간단합니다.
맞습니다. 지하도님의 질문 의도에 해당되는 답변은 이겁니다.
다른 분들은 동문서답이 되셨네요.
그런데 문제는 "중복이 안되게 저장시키는" 방법을 구현하는 것이죠.
이건 STL의 random_shuffle 알고리듬을 사용하면 간단합니다.
^^;;
계속 random을 찍다보면 그 값들이 정규 분포를 이룬다는 것을 알수 있습니다.^^ 맞죠?;;
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
유닉스 환경이라면 /dev/random 을 쓰시면 더욱 랜덤한 수를 얻을
유닉스 환경이라면 /dev/random 을 쓰시면 더욱 랜덤한 수를 얻을수있습니다..
지원안되는 OS도 있으니 지원여부를 확인한후 써야되겠죠..
댓글 달기