gpt4 book ai didi

c - 不要在 C++ 2 中生成相同的随机数

转载 作者:太空宇宙 更新时间:2023-11-04 06:47:38 27 4
gpt4 key购买 nike

srand(time(NULL));

for(i = 0; i < 100; i++)
{
int randomNumber = (rand() % 100) + 1 // gets a random number from 0 - 100.
// do stuff
}

我目前有一个随机数变量,它在 for 循环的每次迭代中存储一个 0-100 的数字,然后下面的代码使用该随机数变量进行填充。但是我注意到,在循环的每次迭代中,有时会生成相同的随机数,有时会生成一个非常接近我已经生成的数字的数字。例如:当
i = 1 randomNumber 可能是 50,但是当 i = 2 时,它可能是 51。这对我正在编码的东西来说非常烦人。有没有一种方法可以做到,如果它第一次生成 50,第二次它必须生成一个与刚刚生成的整数相差 2 的整数。例如。如果只是生成50,那么第二次生成不了48、49、50、51、52,但还是生成0-100之间,只是跳过这些数字。然后在生成新的随机数时重复同样的事情。

最佳答案

最简单的方法是在循环中获取随机数,检查它是否太接近最后一个数字。

srand(time(NULL));
int lastRandom = -2;
for(int i = 0; i < 100; i++)
{
int randomNumber;
do {
randomNumber = (rand() % 100) + 1; // gets a random number from 0 - 100.
} while (randomNumber >= lastRandom - 2 && randomNumber <= lastRandom + 2);
lastRandom = randomNumber;
// do stuff
}

通常我不建议在循环中调用 rand(),因为如果验收标准太严格,这可能会持续太长时间。但这只会拒绝大约 5%,因此不太可能重复多次。

关于c - 不要在 C++ 2 中生成相同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55976174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com