国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 新河县| 兰坪| 常山县| 岳普湖县| 温宿县| 万盛区| 新竹县| 东台市| 库伦旗| 泰州市| 玛沁县| 连江县| 大埔区| 镶黄旗| 塔河县| 莱西市| 霸州市| 鄂托克前旗| 荔浦县| 广昌县| 阿勒泰市| 吉隆县| 恩平市| 阿城市| 宝清县| 大邑县| 宁化县| 青铜峡市| 思南县| 镇安县| 卢龙县| 乐东| 黑龙江省| 当阳市| 叙永县| 呼和浩特市| 涿州市| 上虞市| 铜梁县| 崇信县| 开封市|