最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2013年05月31日 10:21:10   作者:  
本篇文章是對如何實現(xiàn)一定概率選中某一個字母的解決方法進行了詳細的分析介紹,需要的朋友參考下
在C#版看到這一篇文章,手邊現(xiàn)在正開著MacBook上網(wǎng)
實在不太想重新開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++編程中用數(shù)組名作函數(shù)參數(shù)的方法

    詳解C++編程中用數(shù)組名作函數(shù)參數(shù)的方法

    這篇文章主要介紹了詳解C++編程中用數(shù)組名作函數(shù)參數(shù)的方法,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C++控制結構詳情

    C++控制結構詳情

    這篇文章主要介紹了C++控制結構詳情,C++的控制結構和其它編程語言類似包括順序結構、選擇結構、循環(huán)結構,更多相關資料需要的小伙伴可以參考下面文章內容
    2022-03-03
  • C語言動態(tài)內存函數(shù)(malloc、calloc、realloc、free)詳解

    C語言動態(tài)內存函數(shù)(malloc、calloc、realloc、free)詳解

    在C語言中,動態(tài)內存函數(shù)是塊重要的知識點,以往,我們開辟空間都是固定得,數(shù)組編譯結束后就不能繼續(xù)給它開辟空間了,開辟的空間滿了,就不能在開辟空間了,學習本文章,我們就可以解決這個問題,向內存申請空間,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • Dijkstra算法與Prim算法的異同案例詳解

    Dijkstra算法與Prim算法的異同案例詳解

    這篇文章主要介紹了Dijkstra算法與Prim算法的異同案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • QT應用程序cout輸出中文亂碼解決方法

    QT應用程序cout輸出中文亂碼解決方法

    本文主要介紹了QT應用程序cout輸出中文亂碼解決方法,文中通過圖文的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • C++實現(xiàn)LeetCode(110.平衡二叉樹)

    C++實現(xiàn)LeetCode(110.平衡二叉樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(110.平衡二叉樹),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言實現(xiàn)Floyd算法

    C語言實現(xiàn)Floyd算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)Floyd算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 深入了解C++ 結構體(struct)與共用體(union)

    深入了解C++ 結構體(struct)與共用體(union)

    這篇文章主要介紹了C++ 結構體與共用體的的相關資料,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-08-08
  • 用C++實現(xiàn)隊列的程序代碼

    用C++實現(xiàn)隊列的程序代碼

    本篇文章是對使用C++實現(xiàn)隊列的程序代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ STL之list雙向鏈表容器方式

    C++ STL之list雙向鏈表容器方式

    這篇文章主要介紹了C++ STL之list雙向鏈表容器方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評論

稷山县| 绥中县| 天津市| 姜堰市| 菏泽市| 天门市| 巴林右旗| 防城港市| 桓台县| 桃园市| 汉中市| 安康市| 永仁县| 蒙自县| 卫辉市| 巴林右旗| 嘉义县| 澄迈县| 温泉县| 玉田县| 客服| 颍上县| 赫章县| 蚌埠市| 海伦市| 衡山县| 原阳县| 平谷区| 绥中县| 宿州市| 启东市| 肥城市| 扶风县| 锦州市| 马公市| 桑日县| 平武县| 柘荣县| 翁源县| 桦甸市| 太白县|