Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否在一行中获取两个唯一的数字?_C++ - Fatal编程技术网

C++ 是否在一行中获取两个唯一的数字?

C++ 是否在一行中获取两个唯一的数字?,c++,C++,我想确保“grid”不能返回2个相同的值,但我不确定如何返回。这是我的密码: grid[rnd(2,x-2)*y+rnd(2,y-2)]。高度=rnd(25,40) 我还为rand()添加了srand(time(NULL)) 我希望我能提供更多的细节或者我尝试过的东西,但是我找不到任何与这个主题相关的东西 编辑:我当然可以重新随机,但我觉得这是一种不好的做法:/如果你真的需要避免连续的重复,1你所需要做的就是将上一个值传递到你的函数中,然后在循环中生成随机数,直到它是不同的 伪代码: int r

我想确保“grid”不能返回2个相同的值,但我不确定如何返回。这是我的密码:

grid[rnd(2,x-2)*y+rnd(2,y-2)]。高度=rnd(25,40)

我还为rand()添加了
srand(time(NULL))

我希望我能提供更多的细节或者我尝试过的东西,但是我找不到任何与这个主题相关的东西


编辑:我当然可以重新随机,但我觉得这是一种不好的做法:/

如果你真的需要避免连续的重复,1你所需要做的就是将上一个值传递到你的函数中,然后在循环中生成随机数,直到它是不同的

伪代码:

int rnd(..., int prev) {
    int y;
    do {
        y = rand() ...;
    } while (y == prev);
    return y;
}
请注意,您也可以将
prev
作为函数内的静态变量进行维护。但这将使它无法同时生成多个独立的流



1.这实际上使事情变得不那么“随机”,从更可预测的意义上说。

如果你真的需要避免连续重复,1你所需要做的就是将上一个值传递到你的函数中,然后在循环中生成随机数,直到它是不同的

伪代码:

int rnd(..., int prev) {
    int y;
    do {
        y = rand() ...;
    } while (y == prev);
    return y;
}
请注意,您也可以将
prev
作为函数内的静态变量进行维护。但这将使它无法同时生成多个独立的流



1.这实际上使事情变得不那么“随机”,从更可预测的意义上说。

(伪)随机性与唯一性是正交的。(伪)随机性与唯一性是正交的。或者洗牌一个唯一的列表并从列表中选择随机值。@KillianDS:确实如此。虽然我的印象是OP只是想避免连续重复,但是像Fisher-Yates这样的方法在这里可能有些过分。或者洗牌一个唯一的列表,然后从列表中随机选取值。@KillianDS:的确如此。虽然我得到的印象是OP只是想避免连续的重复,所以像Fisher-Yates这样的方法可能有点过头了。