好的我正在创建一个生成迷宫的程序。但是它很慢。然而,经过调查,似乎是因为我使用的随机函数运行良好。
以下是我的主要功能
中的循环while(maze.size() != 1){
cell = rand()%(nrows*ncols);
direction = maze.randdir(cell);
cout << "Cell: " << cell << " Merged With: " <<maze.dir(cell,direction)<<endl;
maze.merge(cell, maze.dir(cell, direction));
}
如图所示随机挑选细胞,并且rand最初用srand(时间(NULL))播种;然后选择一个方向使用类似的方法,但它会在返回之前检查以确保其有效方向。这是下面的内容。
int dset::randdir(int i){
srand(time(NULL));
int direction;
//cout << "i : " << i << endl;
while (true){
direction = rand() % 4;
if(direction ==0){
if( i != 0){
if(i%(ncols) != 0){
break;
}
}
}
if(direction == 1){
if(i-ncols > 0){
break;
}
}
if (direction == 2){
if ( i == 0 )
break;
if (i%ncols != ncols-1){
break;
}
}
if (direction == 3){
if (i+ncols < ((nrows*ncols))){
break;
}
}
}
return direction;
}
我认为它们中的任何一个都没有任何错误,但是当我运行程序时,我在while循环中输出的out语句显示它在一个次数(方式太多无法计数)之前尝试了相同的单元格和相同的方向尝试新的。这使我的程序痛苦地缓慢。