开发环境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;
    }    
}
posted on   闻缺陷则喜何志丹  阅读(2)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~



点击右上角即可分享
微信分享提示