Random 난수 생성하기

C++ 2010. 10. 13. 22:01

#include <iostream>
#include <time.h>
#include <windows.h>
using namespace std;

int main(int argc, TCHAR* argv[])
{
srand((unsigned int)time(NULL)); //초기화

int result;
for (int i=0; i<10; i++)
{
result = rand(); //0 to RAND_MAX (32767). 
wcout << TEXT("rand : ") << result << endl;
}
return 0;
}
 
이건 1초마다 같은 랜덤값이 나오는 등... 문제도 있고 초창기 방식인듯..

다음 글을 보면..
boost가 나은 듯.. boostpro.com에서 설치후 다음과 같이 사용.

#include <iostream>

#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_int.hpp>
#include <boost/random/variate_generator.hpp>

using namespace std;

int main()
{
boost::mt19937 gen;
boost::uniform_int<> dist(1, 7);
boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist);

for (int i=0; i<10; i++)
{
cout << die() << endl;
}

return 0;
} 
(boost 랜덤 사용은 다른 사람 blog에서 봤는데 제시해준 샘플 돌려보니 희안한 결과값 출력해주셨다..
결국 boost에서 제시한 예제로 정상 동작 확인.. 사람 힘들게하는 case by case)