0
点赞
收藏
分享

微信扫一扫

干扰数



开发环境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;

}

}

举报

相关推荐

0 条评论