我正在使用 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]。你能不能给我看一个代码来完成我的工作。最好的感谢
正如您所猜测的那样,该代码确实会生成不包含该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 在评论中所指内容的更多详细信息,请参阅此帖子)。