在C++中,利用随机数生成器生成一个随机数num,然后创建一个包含10个元素的数组,将10个元素依次与随机数num对比,统计相等的次数。

问题描述:

分析下面的代码和结果回答下面的问题。在C++中,利用随机数生成器生成一个随机数num,然后创建一个包含10个元素的数组,将10个元素依次与随机数num对比,统计相等的次数。

代码

// Created by 黑马程序员.
#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max)
{
    // 创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());


    // 定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    // 生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
/*
 * 获得一个随机数(1-10),创建一个10元素的数组对象。
 * 由用户进行键盘输入,提供数组10个元素的值
 * 使用for循环挨个取出数组的元素
 * 判断每个元素是否和随机数相等
 * 最终输出用户输入的10个数字中,猜对了几个
 */

int main()
{
    // 1. 获得随机数
    int num = get_random_num(1, 10);
    cout << num << endl;

    // 2. 需要用户输入10次数字,将内容存入数组中
    int arr[10];    // 10个元素的int数组
    for (int i = 0; i < 10; i++)
    {
        cout << "请第" << i + 1 << "次输入数字:";
        cin >> arr[i];
    }

    int result = 0;
    // 3. 去判断数组每个元素是否和随机数相等
    for (int i = 0; i < 10; i++)
    {
        if (arr[i] == num)
        {
            result++;
        }
    }

    cout << "用户最终猜对了:" << result << "次" << endl;
    return 0;
}

结果:

D:\CLion_code\cmake-build-debug\CLion_code.exe
1
请第1次输入数字:1
请第2次输入数字:1
请第3次输入数字:1
请第4次输入数字:2
请第5次输入数字:3
请第6次输入数字:4
请第7次输入数字:4
请第8次输入数字:5
请第9次输入数字:5
请第10次输入数字:5
用户最终猜对了:3次

Process finished with exit code 0

 

问题解答:

在C++中,随机数生成和数组对比的代码分析:

1. 随机数生成的实现:

int get_random_num(int min, int max)
{
    // 创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());

    // 定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    // 生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
  • random_device rd;:用于获取一个种子,以便生成不同的随机数序列。
  • mt19937 gen(rd());:基于Mersenne Twister算法的随机数生成器,使用从rd获取的种子来初始化。
  • uniform_int_distribution<> dis(min, max);:创建一个从minmax范围内均匀分布的整数生成器。
  • dis(gen);:生成并返回一个随机数。

2. 用户输入并存入数组:

int arr[10];    // 10个元素的int数组
for (int i = 0; i < 10; i++)
{
    cout << "请第" << i + 1 << "次输入数字:";
    cin >> arr[i];
}
  • 这段代码创建了一个包含10个整数的数组arr,然后提示用户依次输入10个数字,并将输入的数字存储在数组中。

3. 对比数组中的元素与随机数:

int result = 0;
// 判断数组每个元素是否和随机数相等
for (int i = 0; i < 10; i++)
{
    if (arr[i] == num)
    {
        result++;
    }
}

cout << "用户最终猜对了:" << result << "次" << endl;
  • result 用于记录用户输入的数字与生成的随机数相等的次数。
  • 通过循环遍历数组,将每个数组元素与随机数num进行对比,如果相等,则result自增1。
  • 最终输出用户输入的10个数字中有多少个与随机数相同。

4. 运行结果分析:

  • 生成的随机数为1
  • 用户输入的数字依次为:1, 1, 1, 2, 3, 4, 4, 5, 5, 5。
  • 结果显示,用户的输入中有3次输入的数字与随机数相等,因此输出“用户最终猜对了:3次”。

总结:

  • 数组定义:在C++中,数组是由一批相同类型的元素组成的集合,通过下标访问每个元素。
  • 数组定义方法
    1. 先声明数组,再逐个为每个元素赋值。
    2. 声明数组时同时赋值。
  • 注意事项:数组中的元素类型必须相同,且下标从0开始。

这个代码展示了如何使用随机数生成器生成一个随机数,并通过数组存储用户输入的值,再对比每个元素与随机数是否相等,最终统计并输出相等的次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神笔馬良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值