我想确保'grid'不能返回2个相同的值,但我不确定如何。这是我的代码:
grid[rnd(2,x-2) * y + rnd(2,y-2)].height = rnd(25,40);
int rnd(int min, int max) {
return min + rand() % (max - min + 1);
}
我还用srand(time(NULL));
我希望我能提供更多详细信息或我尝试过的内容,但我找不到与此主题相关的任何内容。
编辑:我当然可以重新随机,但我觉得这是不好的做法:/答案 0 :(得分:6)
如果你真的需要避免连续重复, 1 你需要做的就是将前一个值传递给你的函数,然后在一个循环中生成随机数,直到它是不同的。
的伪代码:
int rnd(..., int prev) {
int y;
do {
y = rand() ...;
} while (y == prev);
return y;
}
请注意,您也可以将prev
维护为函数内的静态变量。但这会使它无法同时生成多个独立的流。
<小时/> <子> 1。这实际上使事情变得更加“随机”,从而变得更具可预测性。