生成范围[min,max]中的随机数

时间:2015-04-01 02:24:46

标签: c visual-studio-2012

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

int random_int(int min, int max) 
{
   return min + rand() % (max - min);
}

但我认为上面的代码是针对范围:[min,max],而不是[min max]。你能告诉我一个代码来完成我的工作。非常感谢

1 个答案:

答案 0 :(得分:0)

正如您所猜测的,代码确实生成了不包含max值的随机数。如果您需要在生成的随机数范围中包含max值,则范围变为[min,max + 1]。因此,您只需将代码修改为:

int random_int(int min, int max)
{
   return min + rand() % (max+1 - min);
}

PS:提供了您发布的原始“模数”伪随机数生成器的质量并不是一个问题(有关@的更多详细信息,请参阅this post undefinedbehaviour在评论中指的是。