当前位置: 首页 >> 程序设计 >> 自定义的随机数生成类
 

自定义的随机数生成类

作者:hjbcn      来源:     发表时间:2006-06-25     浏览次数:      字号:    

#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;
}

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
效率初试可以,比有些算法好。 谢谢!
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •