#include <iostream>
using namespace std;
#include <ctime>
#include <cstdlib>
class CRandom
{
protected:
static bool m_bIfInitialized;
public:
CRandom(){}
~CRandom(){}
static void RandomInit( unsigned int seed = 0 );
static double Random_021();
static int Random_01();
static int Random_0n( int n );
};
bool CRandom::m_bIfInitialized = false;
double CRandom::Random_021()
{
if( !m_bIfInitialized )
RandomInit();
return (double)rand() / (double)( RAND_MAX + 1 );
}
int CRandom::Random_01()
{
if( !m_bIfInitialized )
RandomInit();
return rand() % 2;
}
int CRandom::Random_0n( int n )
{
if( !m_bIfInitialized )
RandomInit();
if( n == 0 )
return 0;
else
return rand() % n;
}
void CRandom::RandomInit( unsigned int seed )
{
if( seed == 0 )
{
seed = (unsigned int)time(NULL);
}
srand( seed );
m_bIfInitialized = true;
}
void main()
{
// 随机数0或1,整数
cout<< CRandom::Random_01() <<endl;
cout<< CRandom::Random_01() <<endl;
cout<< CRandom::Random_01() <<endl;
cout<< CRandom::Random_01() <<endl;
// 随机数[0,1),实数
cout<< CRandom::Random_021() <<endl;
cout<< CRandom::Random_021() <<endl;
cout<< CRandom::Random_021() <<endl;
cout<< CRandom::Random_021() <<endl;
// 随机数[0,n),整数
cout<< CRandom::Random_0n( 5 ) <<endl;
cout<< CRandom::Random_0n( 5 ) <<endl;
cout<< CRandom::Random_0n( 5 ) <<endl;
cout<< CRandom::Random_0n( 5 ) <<endl;
cout<< CRandom::Random_0n( 5 ) <<endl;
}