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

C++猜数字游戏:如何从指定数字列表中随机选取目标数值?

解决方法

先修正你代码里的基础错误

  1. 赋值错误:你写的truenumber = 1, 2, 3, ..., 10完全无效,逗号在这里是逗号运算符,最终truenumber只会被赋值为10,根本不是随机选择。
  2. 判断错误:if (number = truenumber)是赋值操作,不是比较,要改成if (number == truenumber)。
  3. 语法错误:else (number < truenumber)不符合语法,else后面不能加条件,直接写else即可。
  4. 逻辑缺陷:当前代码只判断一次,玩家猜错后输入新数字但不会再做判断,需要加循环让玩家一直猜直到猜对。

实现从1-10中随机选数的简单方案

给你两种简单易懂的方式,选顺手的用:

方式一:用传统rand()函数(入门友好)

只需加两个头文件,几行代码就能搞定:

#include <iostream>
#include <cstdlib>  // 提供rand()和srand()函数
#include <ctime>    // 提供time()获取随机种子
using namespace std;

int main() {
    string message = "Hello";
    cout << message << endl;
    cout << "Lets play a game" << endl;
    cout << "Try to guess the number!" << endl;

    // 初始化随机种子,保证每次运行生成的随机数不同
    srand(time(0));
    // 生成1-10的随机数:rand()%10得到0-9,加1转为1-10
    int truenumber = rand() % 10 + 1;

    int number;
    // 用do-while循环,让玩家持续猜测直到猜对
    do {
        cin >> number;
        if (number == truenumber) {   
            cout << "You got it right!" << endl;
        } else if (number > truenumber) {
            cout << "Too high" << endl;
        } else {
            cout << "Too low" << endl;
        }
    } while (number != truenumber);
    
    return 0;
}

方式二:用C++11标准随机库(更可靠)

如果想避免rand()的局限性,用现代C++的随机工具,代码也不复杂:

#include <iostream>
#include <random>  // 提供现代随机数生成工具
using namespace std;

int main() {
    string message = "Hello";
    cout << message << endl;
    cout << "Lets play a game" << endl;
    cout << "Try to guess the number!" << endl;

    // 设置随机数生成器
    random_device rd;  // 获取随机种子
    mt19937 gen(rd()); // 初始化生成器
    uniform_int_distribution<int> dist(1, 10); // 设置1-10的均匀分布
    int truenumber = dist(gen); // 生成目标随机数

    int number;
    do {
        cin >> number;
        if (number == truenumber) {   
            cout << "You got it right!" << endl;
        } else if (number > truenumber) {
            cout << "Too high" << endl;
        } else {
            cout << "Too low" << endl;
        }
    } while (number != truenumber);
    
    return 0;
}

说明

两种方式都能实现从1-10里随机选数,且支持玩家循环猜测直到答对。第一种适合入门,代码量少;第二种是C++推荐的现代写法,随机数质量更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:10:34