在范围和特定步骤中生成C中的随机数

kat*_*kat 5 c random

好吧,很可能它会被标记为重复,但我正在寻找答案,但找不到类似的东西.问题是:我想在特定范围内生成随机数[即min_value到max_value]并使用特定步骤.对于第一部分,答案是:

int random_value = rand() % max_value + min_value;
Run Code Online (Sandbox Code Playgroud)

该步骤如何定义它?我想上面提到的解决方案导致步骤1.正确吗?如果我想用步骤2(例如2,4,...,16)生成数字,我该怎么办?

Val*_*ity 3

这应该做你想要的:

int GetRandom(int max_value, int min_value, int step)
{
    int random_value = (rand() % ((++max_value - min_value) / step)) * step + min_value;
    return random_value;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果 `(++max_value - min_value)` 不是 `step` 的倍数,除了 @Nisse Engström 提到的之外,还会出现偏差。但OP并不清楚这种情况下的要求。 (2认同)