#pragma once
#ifndef _USING_PCH_
# include <boost/random.hpp>
#if _MSC_VER < 1600
using namespace boost;
#endif
#ifndef _HAS_CPP0X
# define nullptr 0
#endif
#endif
//////////////////////////////////////////////////////////////////////////
class Random
{
public:
Random();
Random( uint32_t seed );
~Random();
//////////////////////////////////////////////////////////////////////////
int Int();
int Int( int max );
int Int( int min, int max );
float Real();
float Real( float max );
float Real( float min, float max );
//////////////////////////////////////////////////////////////////////////
uint32_t GetSeed() const;
void SetSeed( uint32_t seed );
private:
uint32_t _seed;
boost::random::mt19937 _generator;
};
//=====================================================================
#include "stdafx.h"
#ifndef _USING_PCH_
# include "random.h"
#endif
//////////////////////////////////////////////////////////////////////////
Random::Random()
: _seed( static_cast< uint32_t >( ::time( nullptr ) ) ),
_generator( _seed )
{
}
Random::Random( uint32_t seed )
: _seed( seed ),
_generator( _seed )
{
}
Random::~Random()
{
}
//////////////////////////////////////////////////////////////////////////
int Random::Int()
{
return boost::random::detail::generate_uniform_int( _generator, 0, INT_MAX );
}
int Random::Int( int max )
{
return 0 >= max ? 0 : boost::random::detail::generate_uniform_int( _generator, 0, max );
}
int Random::Int( int min, int max )
{
return min >= max ? max : boost::random::detail::generate_uniform_int( _generator, min, max );
}
float Random::Real()
{
return boost::random::detail::generate_uniform_real( _generator, 0.f, 1.f );
}
float Random::Real( float max )
{
return 0.f >= max ? 0.f : boost::random::detail::generate_uniform_real( _generator, 0.f, max );
}
float Random::Real( float min, float max )
{
return min >= max ? max : boost::random::detail::generate_uniform_real( _generator, min, max );
}
//////////////////////////////////////////////////////////////////////////
uint32_t Random::GetSeed() const
{
return _seed;
}
void Random::SetSeed( uint32_t seed )
{
_seed = seed;
_generator.seed( _seed );
}
//=====================================================================
근데 저 랜덤이 언제부터 표준에 들어왔냐
이거 예전에 만들어두고 쓰던 거라 표준에 포함됬는지도 몰랐다 ㅎ
댓글 0