這是我的實現 然而,分析文本文件時有點慢, 任何人有更好的主意或更好的數據結構來實現隨機寫入? 我不使用STL庫,所以不用擔心語法。 代替這裏使用的push_back,載體使用。新增隨機寫作馬爾可夫模型效率
randomInteger將生成範圍
之間randome整數我想如果可能的話,以產生2000字;
我認爲最慢的部分是通過char讀取文件char?
void generateText(int order, string initSeed, string filename){
Map<string , Vector<char> > model;
char ch;
string key;
ifstream input(filename.c_str());
for(int i = 0; i < order; i++){
input.get(ch);
key+=ch;
}
while(input.get(ch)){
model[key].add(ch);
key = key.substr(1,key.length()-1) + ch;
}
string result;
string seed = initSeed;
for(int i = 0;i<2000;i++){
if (model[seed].size() >0) {
ch = model[seed][randomInteger(0, model[seed].size()-1)];
cout << ch;
seed = seed.substr(1,seed.length()-1) + ch;
}
else
return;
}
}
我使用macbk Air 2012,因爲我得到了一個演示程序,其運行速度比我的快得多。我很好奇爲什麼演示可以運行得更快。 – timothyboyboy
我在這個函數中放置一個大約1.8MB的文本文件。輸出結果大約需要2分鐘。 – timothyboyboy