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

C语言rand函数生成1-5范围随机数每次输出相同值问题咨询

问题原因

  • C标准库的rand()是伪随机数生成器,依赖初始种子值生成固定序列的随机数
  • 未主动设置种子时,rand()默认使用固定的初始种子,因此每次程序运行得到的随机数完全相同,你观察到的固定输出4就是默认种子下的第一个生成值

修复方案

不需要调整现有主逻辑,仅需做两处修改即可实现每次运行生成不同的随机数:

  1. 新增<time.h>头文件引入,用于获取系统时间作为动态种子
  2. 在调用rand()之前调用srand()设置随机种子,程序运行全程仅需设置1次即可

修改后的完整代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
  // 用当前系统时间作为种子,保证每次运行种子都不同
  srand((unsigned int)time(NULL));

  int r;
  r = rand() % 5 + 1;
  printf("%d ", r);

  switch (r){
    case 1:
      printf("1\n");
      break;
    case 2:
      printf("2\n");
      break;
    case 3:
      printf("3\n");
      break;
    case 4:
      printf("4\n");
      break;
    case 5:
      printf("5\n");
      break;
  }
  return 0;
}

关于循环结构的说明

  • 如果你仅需要每次启动程序生成1个1~5的随机数,不需要添加循环结构,按上述修改即可满足需求
  • 如果你需要单次程序运行时生成多个不同的随机数,才需要添加循环结构,注意srand()只能放在循环外调用1次,不要放在循环内部重复调用,否则会因为时间精度问题生成重复的随机数

内容的提问来源于stack exchange,提问作者Jacob G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:15:03