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

如何使程序按预期运行?实现winningNum随机值每次迭代后更新

问题分析与解决方案

你的代码里每次do-while循环确实会重新生成winningNum,但看起来随机值没变化的核心原因是:rand()函数默认使用固定种子(值为1),导致每次运行程序时生成的随机数序列完全一致。要实现每次迭代更新随机数,需要补充随机种子的初始化。

修改后的代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>  // 新增头文件,用于获取系统时间

int main(){
    int guess;
    int guess_count = 0;
    int guess_limit = 10;

    // 用当前时间初始化随机种子,确保每次运行程序生成的随机序列不同
    srand(time(NULL));

    do {
        // 每次循环迭代生成新的随机数
        int winningNum = rand() % 50 + 1;
        
        printf("Enter your guess (number between 1 and 50): ");
        scanf("%d", &guess);
        guess_count++;

        if (guess > winningNum){
            printf("Too High...\n");
        }
        else if(guess < winningNum){
            printf("Too Low...\n");
        }
        if(guess == winningNum){
            printf("Correct,the number was %d.\n", winningNum);
            break;
        }

    }while(guess_count < guess_limit);

    if(guess_count == guess_limit){
        printf("You made %d wrong guesses.\n",guess_count);
    }
    return 0;
}

关键修改点

  • 新增<time.h>头文件:用来获取当前系统时间,作为随机数生成器的种子
  • 调用srand(time(NULL)):在程序启动时初始化随机种子,让rand()每次运行都能生成不同的随机数序列
  • 保留winningNum在循环内的定义:确保每次循环迭代都会生成全新的随机数,满足你的需求

内容的提问来源于stack exchange,提问作者clinton-k8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:11:08