如何实现一定概率选中某一个字母

 更新时间:2020年4月25日 17:45  点击:2011
在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;
}

[!--infotagslink--]

相关文章

  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • php实现字符串首字母大写和单词首字母大写的方法

    本文实例讲述了php实现字符串首字母大写和单词首字母大写的方法。分享给大家供大家参考。...2015-03-15
  • C# 获取汉字的拼音首字母

    一种是把所有中文字符集合起来组成一个对照表;另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母。碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手动把该汉字移动到对应的拼音首字母队列,我们这里介绍第二种...2020-06-25
  • php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序。这是中国人大多数使用的排序方法。那么在php程序中该如何操作呢?下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的...2015-10-23
  • C#中把英文字母转换为大写或小写的方法

    这篇文章主要介绍了C#中把英文字母转换为大写或小写的方法,在编码中是一个比较常用的功能,需要的朋友可以参考下...2020-06-25
  • Python就将所有的英文单词首字母变成大写

    这篇文章主要给大家介绍了关于Python就将所有的英文单词首字母变成大写的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-12
  • C++ 随机数字以及随机数字加字母生成的案例

    这篇文章主要介绍了C++ 随机数字以及随机数字加字母生成的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-11
  • jackson json序列化实现首字母大写,第二个字母需小写

    这篇文章主要介绍了jackson json序列化实现首字母大写,第二个字母需小写方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-29
  • JS验证逗号隔开可以是中文字母数字

    这篇文章主要介绍了JS验证逗号隔开可以是中文字母数字 的相关资料,需要的朋友可以参考下...2016-04-24
  • C# 格式化字符首字母大写的方法

    这篇文章介绍了C# 格式化字符首字母大写的方法,有需要的朋友可以参考一下...2020-06-25
  • PS初学者怎么做出漂亮的黄铜字母效果的教程

    小编向大家推荐一篇ps中如何制作黄铜字母效果的教程,仅需几步就能轻松完成,感兴趣的同学快试试吧 今天为大家分享PS简单制作漂亮的黄铜字母效果方法,教程很不错,值得...2016-12-15
  • 基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法

    大转盘中奖概率算法在我们的日常生活中,经常遇到,那么基于php代码是如何实现中奖概率算法的,下面通过一段代码实例给大家介绍php中奖概率算法...2015-12-22
  • php 取中英字母长度代码

    php 取中英字母长度代码 function substrs($c, $l=16){ if(strlen($c)>$l){ $n=0; for($i=0;$i<$l;$i++){ if(ord(substr($c,$i,1))>127){ $n...2016-11-25
  • php 中奖概率算法实现代码

    这篇文章主要介绍了php 中奖概率算法,需要的朋友可以参考下...2017-02-09
  • c#获取相同概率随机数的算法代码

    这篇文章主要介绍了c#获取相同概率随机数的算法代码,有需要的朋友可以参考一下...2020-06-25
  • C#获取汉字字符串拼音首字母的方法

    这篇文章主要介绍了C#获取汉字字符串拼音首字母的方法,实例分析了C#操作汉字及字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php获取中文字符拼音首字母实例

    在php中如果我们要获取汉字的拼音第一个字母我们先要了解asc码的范围码了,我们只要知道这个值上下限就可以使用php中的ord来获取我相关的汉字拼音了。 实例1 ...2016-11-25
  • php实现的一段简单概率相关代码

    这篇文章主要介绍了php实现的一段简单概率相关代码,通过数字的运算分析概率统计的原理与使用技巧,需要的朋友可以参考下...2016-06-12
  • php实现获取汉字的首字母两个实例

    要获取汉字首字母的方法有很多,这个我们一般要把汉字分出来然后转换成拼音,然后再利用substr取第一个字母了,下面我网上找到两个实例,各有千秋大家一起来看看吧。 例1...2016-11-25
  • Python OpenCV去除字母后面的杂线操作

    这篇文章主要介绍了Python OpenCV去除字母后面的杂线操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-05