c++ 난수 발생 코치 좀 부탁드립니다...
글쓴이: ringgoo28 / 작성시간: 수, 2009/04/08 - 11:40오후
제가 난수 발생 프로그램 짜고 있는데요.
문제가 1부터 10 사이의 난수를 발생하는 프로그램을 작성하는건데요. 조건이 Rnd 클래스를 정의하고 객체를 선언, Rnd 클래스는 난수를 저장하는 하나의 전용멤버 변수를 갖고, 난수를 생성하여 출력하는 create()함수를 공용 멤버로 정의하라.
인데요. 제가 짜봤는데 문제가 뭘까요? 그리고 rand()함수 쓰려면 헤더파일에 선언해야 되는거
아닌가요? 시드값 초기화하는 문장에서 time을 못 읽게다던데요. 문제가 뭘까요..
제가봐도 엉성하긴한데 어느부분부터 잡아야될지 모르겠네요.. 조금만이라도 코치 좀 부탁드립니다.
#include
#include
using namespace std;
class Rnd {
private :
int random;
public :
void set_create(int a){
random = rand();};
void get_create(){
return random;}
};
int main(void)
{
int x;
Rnd random;
create.set_create(x);
cout <<" 난수 발생 : " << x << create.set_create() << endl;
return 0;
}
Forums:


srand() 를 써야 합니다.
#include iostream #include cstdlib // rand 함수는 표준 C 언어에 있으므로 다음과 같이 등록시킵니다. using namespace std; class Rnd { private: double rn; // 더블형으로 반환할 데이터 값을 만든후 int n; // 발생 범위설정 public: void set_value(int a) { srand(a); // srand 함수를 이용해 seed 값을 초기화 합니다. // 만약 time 함수를 쓴다면 값 a 대신에 // timestamp 를 찍어서 unsigned int 형으로 초기화 // 시키면 됩니다 n = 10; } double get_value() { rn = rand()*(double(n + 1)/double(RAND_MAX + 1)) ; // 1 부터 n 까지 랜덤 함수 생성 return rn; } }; int main(void) { unsigned int x, seed; seed = 1; Rnd obj; obj.set_value(seed); for (x = 1; x <= 10;x++) { // 루프를 10 번 돌리면 10개의 로또?숫자가 나옵니다 cout << "generated number is " << obj.get_value() << endl; } return 0; }아참, 위의 코드는 MinGW GCC(G++) 3.4 에서 잘 돌아갑니다.
제가 봐도 좀 어설프군요...
댓글 달기