手机
当前位置:查字典教程网 >编程开发 >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++)

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

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

归并排序的递归实现与非递归实现代码

探讨:用两个栈实现一个队列(我作为面试官的小结)

解析如何用指针实现整型数据的加法

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

c++通过引用实现三个数字求最大值

C++多继承同名隐藏实例详细介绍

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

精品推荐
分类导航