国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

如何實(shí)現(xiàn)一定概率選中某一個(gè)字母

2020-01-26 16:02:19
字體:
供稿:網(wǎng)友
在C#版看到這一篇文章,手邊現(xiàn)在正開著MacBook上網(wǎng)
實(shí)在不太想重新開Windows跟Visual Studio來編碼
正好我也在練習(xí)C++ Template,那就很剛好試著用Template來實(shí)踐一下
復(fù)制代碼 代碼如下:

//
//  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;
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 崇信县| 平武县| 阳信县| 濉溪县| 进贤县| 比如县| 大荔县| 和平县| 陇南市| 房山区| 天镇县| 孙吴县| 盐山县| 华池县| 清镇市| 环江| 和顺县| 壶关县| 综艺| 沁水县| 名山县| 颍上县| 隆德县| 苍梧县| 洛隆县| 读书| 行唐县| 龙胜| 且末县| 浦北县| 柘荣县| 温州市| 饶河县| 安平县| 克拉玛依市| 达州市| 通许县| 新疆| 姚安县| 四平市| 汕头市|