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

为什么C++ rand函数输出的随机值超出了我设置的参数范围?

问题原因
  • 数组越界访问,触发未定义行为
    你定义的int array[] = {randomNumb}仅初始化了长度为1的int数组,只能存储1个元素。调用showArray(array, 25)时,函数会从数组起始地址开始向后读取25个int长度的内存,除第一个元素外,后续读取的都是栈上的无关垃圾数据,输出自然是异常的乱值。
  • 未生成25个随机数,仅生成了1个有效随机值
    你当前代码仅调用了1次rand()生成1个随机数,没有循环生成25个目标随机数的逻辑,也没有将生成的数存入数组对应位置的步骤。
  • 随机数范围计算错误
    你要生成3~7闭区间的随机数,共有5个合法取值,正确计算公式为rand() % 取值总数 + 区间最小值,也就是rand() %5 +3。你原来写的rand()%3 +4只能生成4、5、6三个值,本身就不符合需求,同时你还漏了time()函数依赖的<ctime>头文件。
修正后可运行代码
#include <iostream>
#include <ctime>
using namespace std;

void showArray(int a[], const int size)
{ 
    for (int i = 0; i < size; i++)
    {
        cout << a[i] << ", ";
    }
}
 
int main()
{
    srand(time(NULL));
    const int ARRAY_SIZE = 25;
    int array[ARRAY_SIZE];
    // 循环生成25个符合要求的随机数存入数组
    for(int i = 0; i < ARRAY_SIZE; i++){
        array[i] = rand() % 5 + 3;
    }
    showArray(array, ARRAY_SIZE);
    return 0;
}

内容的提问来源于stack exchange,提问作者Caleb Onuonga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:24:07