开发环境VS2005(VC8)
#include <iostream> #include <vector> using namespace std ; #include <time.h> #define ULONG unsigned long //干扰数的意义 //当要连续调用rand的时候,几个rand关联性太强,可以rand()+干扰数 class IGanRaoShu //干扰数,取一个数,分布没有任何规律,可以重复。配合随机数,防止随机数规律过强。 { public: virtual ULONG GetGanRao()= 0; }; class CGanRaoShu : public IGanRaoShu { public: typedef long (* GANRAO_FUN)() ; CGanRaoShu() { m_iPos = 0 ; }; ULONG GetGanRao() { if( 0 == m_pFuns.size() ) return 0; m_iPos = ( m_iPos + 1 ) % m_pFuns.size(); return m_pFuns[m_iPos](); }; void AddGanRaoFun(GANRAO_FUN pFun) { m_pFuns.push_back(pFun); };
protected:
std::vector<GANRAO_FUN> m_pFuns; int m_iPos ; }; long GetCurTime() { return time(NULL); } void main() { CGanRaoShu g ; g.AddGanRaoFun(clock); g.AddGanRaoFun(GetCurTime); for( int i = 0 ; i < 100 ; i++ ) { cout << g.GetGanRao() << endl; } }