开发环境VS2005(VC8) #include iostream #include vector using namespace std ; #include time.h #define ULONG unsigned long //干扰数的意义 //当要连续调用rand的时候,几个rand关联性太强,可以rand()+干扰数 class IG
开发环境VS2005(VC8)
#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;
}
}