You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何随机生成[-99,99]区间内的整数?

C++ 生成[-99,99]区间随机整数的正确实现

现有代码错误原因

你编写的代码array[i][j] = rand() % 99 + (-99);存在逻辑错误:

  • rand() % 99的取值范围是0到98,合计仅99种随机结果
  • 加上-99偏移后整体取值范围变为*-99到-1*,所以只能输出负区间的数值

正确实现方案

方案1:基于传统rand函数修正

[-99,99]区间合计有199个不同整数,需要先生成0到198范围的随机数,再偏移-99即可覆盖目标区间,修正后代码如下:

// 注意:使用rand生成随机数前,需要在程序入口处调用一次srand((unsigned int)time(NULL))设置随机种子,否则每次运行生成的随机序列一致
void input(int array [row][col]){
    for (int i = 0; i < row; i++){
        for (int j = 0; j < col; j++){
            array[i][j] = rand() % 199 - 99;
        }
    }
}

方案2:C++11及以上版本推荐实现(随机数均匀性更好)

使用标准库提供的组件,生成的随机数质量更高、分布更均匀,示例代码如下:

#include <random>

void input(int array [row][col]){
    // 随机数生成器和分布规则全局仅需初始化一次,static修饰避免重复创建
    static std::random_device rd;
    static std::mt19937 gen(rd());
    static std::uniform_int_distribution<int> dist(-99, 99);

    for (int i = 0; i < row; i++){
        for (int j = 0; j < col; j++){
            array[i][j] = dist(gen);
        }
    }
}

内容的提问来源于stack exchange,提问作者matej samolej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:36:03