C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[20257] [질문] 벡터를 random_shuffle 시 실행시 마다 똑같은 순서대로 섞는데 이를 랜덤하게 하려면...
진수.네모 [miman101] 1039 읽음    2002-07-22 09:24
벡터를 random_shuffle 시 실행시 마다 똑같은 순서대로 섞는데 이를 랜덤하게 하려면
어떻게 해야 하나요?


김백일님이 쓴 해결책

여기서    
random_shuffle(v.begin(), v.end(), RandomFunction());   // 매번 실행 시마다 다르다.
요부분에서 에러가 나오는데... 어떻게 해야할지...

// Example for random_shuffle()
#include<cstdlib>
#include<iostream>
#pragma hdrstop
#include<vector>
#include<iterator>
#include<algorithm>
#include<numeric>

using namespace std;

struct RandomFunction {
     RandomFunction() { randomize(); }
     int operator() (int X) { return random(X); }
};

int main() {
     vector<int> v(12);
     iota(v.begin(), v.end(), 0);                  // 0 1 2 3 4 5 6 7 8 9 10 11
     ostream_iterator<int> out(cout, " ");
     copy(v.begin(), v.end(), out);
     cout << endl;

     random_shuffle(v.begin(), v.end());       // 1 5 11 2 6 4 10 8 7 0 9 3 (빌더 6 STLport의 경우)
     copy(v.begin(), v.end(), out);
     cout << endl;

     random_shuffle(v.begin(), v.end(), RandomFunction());   // 매번 실행 시마다 다르다.
     copy(v.begin(), v.end(), out);
     cout << endl;

     return 0;
}

+ -

관련 글 리스트
20257 [질문] 벡터를 random_shuffle 시 실행시 마다 똑같은 순서대로 섞는데 이를 랜덤하게 하려면... 진수.네모 1039 2002/07/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.