在 [min,max] 范围内生成随机数

Joh*_*ohn 3 c

我正在使用 C 生成范围 [min max] 内的整数随机数。我在用

int random_int(int min, int max) 
{
   return min + rand() % (max - min);
}
Run Code Online (Sandbox Code Playgroud)

但我认为上面的代码适用于范围:[min, max),而不适用于 [min max]。你能不能给我看一个代码来完成我的工作。最好的感谢

Sle*_*Eye 6

正如您所猜测的那样,该代码确实会生成不包含该max值的随机数。如果您需要将max值包含在生成的随机数范围内,则范围变为 [min,max+1)。因此,您可以简单地将代码修改为:

int random_int(int min, int max)
{
   return min + rand() % (max+1 - min);
}
Run Code Online (Sandbox Code Playgroud)

PS:前提是您发布的原始“模”伪随机数生成器的质量不是问题(有关@undefinedbehaviour 在评论中所指内容的更多详细信息,请参阅此帖子)。