这是我的实现 然而,分析文本文件时有点慢, 任何人有更好的主意或更好的数据结构来实现随机写入? 我不使用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