一定の確率でアルファベットを選択する方法
2579 ワード
C#版でこの文章を見て、手元は今MacBookを開いてインターネットを利用しています
WindowsとVisual Studioを再オープンしてエンコードしたくない
ちょうど私もC++Templateの练习をしていたので、ちょうどTemplateで実践してみました
WindowsとVisual Studioを再オープンしてエンコードしたくない
ちょうど私もC++Templateの练习をしていたので、ちょうどTemplateで実践してみました
//
// main.cpp
// RandomTest
//
// Created by Cloud on 2011/4/10.
// Copyright 2011 Orz. All rights reserved.
//
#include
#include
using namespace std;
template
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 RandManager
{
vector > m_randomList;
int m_sumOfProbability;
public:
RandManager() :m_randomList(), m_sumOfProbability(0)
{
}
void AddRandomWord(RandomWord word)
{
if(m_sumOfProbability <= 100)
m_randomList.push_back(word);
cout< cout< cout< m_sumOfProbability += word.getProbability();
}
void RandomGenerate(int randNum)
{
cout< int sum = 0;
for(int i = 0 ; i < m_randomList.size() ; i++)
{
RandomWord orz = m_randomList[i];
if( (sum <= randNum) && (randNum < (orz.getProbability() + sum)))
{
cout< break;
}
else
{
sum += orz.getProbability();
}
}
}
};
int main (int argc, const char * argv[])
{
RandManager manager;
manager.AddRandomWord(RandomWord('A',10));
manager.AddRandomWord(RandomWord('B',10));
manager.AddRandomWord(RandomWord('C',35));
manager.AddRandomWord(RandomWord('D',25));
manager.AddRandomWord(RandomWord('E',20));
srand(time(NULL));
manager.RandomGenerate(rand()%100);
return 0;
}