手机
当前位置:查字典教程网 >编程开发 >C语言 >如何实现一定概率选中某一个字母
如何实现一定概率选中某一个字母
摘要:在C#版看到这一篇文章,手边现在正开著MacBook上网实在不太想重新开Windows跟VisualStudio来编码正好我也在练习C++T...

在C#版看到这一篇文章,手边现在正开著MacBook上网

实在不太想重新开Windows跟Visual Studio来编码

正好我也在练习C++ Template,那就很刚好试著用Template来实践一下

复制代码 代码如下:

//

// main.cpp

// RandomTest

//

// Created by Cloud on 2011/4/10.

// Copyright 2011年 Orz. All rights reserved.

//

#include <iostream>

#include <vector>

using namespace std;

template<class T>

class RandomWord

{

T m_Word;

int m_Probability;

public:

RandomWord(T word, int probability):m_Word(word),m_Probability(probability){}

T getWord() { return m_Word; }

int getProbability() { return m_Probability; }

};

template<class T>

class RandManager

{

vector<RandomWord<T> > m_randomList;

int m_sumOfProbability;

public:

RandManager() :m_randomList(), m_sumOfProbability(0)

{

}

void AddRandomWord(RandomWord<T> word)

{

if(m_sumOfProbability <= 100)

m_randomList.push_back(word);

cout<<"Add word:"<<word.getWord()<<endl;

cout<<"Probability:"<<m_sumOfProbability;

cout<<"-"<<word.getProbability() + m_sumOfProbability<<endl;

m_sumOfProbability += word.getProbability();

}

void RandomGenerate(int randNum)

{

cout<<"Random:"<<randNum<<endl;

int sum = 0;

for(int i = 0 ; i < m_randomList.size() ; i++)

{

RandomWord<T> orz = m_randomList[i];

if( (sum <= randNum) && (randNum < (orz.getProbability() + sum)))

{

cout<<"Generate:"<<orz.getWord()<<endl;

break;

}

else

{

sum += orz.getProbability();

}

}

}

};

int main (int argc, const char * argv[])

{

RandManager<char> manager;

manager.AddRandomWord(RandomWord<char>('A',10));

manager.AddRandomWord(RandomWord<char>('B',10));

manager.AddRandomWord(RandomWord<char>('C',35));

manager.AddRandomWord(RandomWord<char>('D',25));

manager.AddRandomWord(RandomWord<char>('E',20));

srand(time(NULL));

manager.RandomGenerate(rand()%100);

return 0;

}

【如何实现一定概率选中某一个字母】相关文章:

关于c语言的一个小bug详解

自己实现strcpy函数的实现方法

DHCP:解析开发板上动态获取ip的2种实现方法详解

如何在C语言的宏中使用类型关键字

关于C++中虚拟继承的一些总结分析

如何使用VC库函数中的快速排序函数

C语言栈顺序结构实现代码

函数式宏定义与普通函数的区别

函数指针的一些概念详解

先序遍历二叉树的递归实现与非递归实现深入解析

精品推荐
分类导航