【发布时间】:2015-11-28 22:38:46
【问题描述】:
我有一个使用随机生成器创建立方体的 c++ 程序。要创建立方体,我有这个:
void generateSquare() {
int num = 0;
srand(time(NULL));
for (int r = 0; r < MSQUARE; r++) {
for (int c = 0; c < MSQUARE; c++) {
do {
num = (rand() % (MSQUARE * MSQUARE)) + 1;
} while (!checkUnique(num));
cube[r][c] = num;
}
}
}
它只允许生成一个数字。然后将该函数包装在一个 do..while 循环中,这样如果正方形不满足特定条件,则会生成一个新正方形,直到生成满足条件的正方形为止。
问题在于它不断地一遍又一遍地生成同一个正方形。我认为 srand(time(NULL)) 会为 rand() 函数播种,以便每次调用它时它都会生成不同的随机数以创建一个新的唯一方块,但看起来这并没有发生。
void checkSquare() {
do {
generateSquare();
} while (!perfect);
}
这不是实际的 do...while 循环,但可以让您了解它是如何被调用的。
如何确保种子每次都是唯一的?
【问题讨论】: