问题描述:
分析下面的代码和结果回答下面的问题。在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);
:创建一个从min
到max
范围内均匀分布的整数生成器。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++中,数组是由一批相同类型的元素组成的集合,通过下标访问每个元素。
- 数组定义方法:
- 先声明数组,再逐个为每个元素赋值。
- 声明数组时同时赋值。
- 注意事项:数组中的元素类型必须相同,且下标从0开始。
这个代码展示了如何使用随机数生成器生成一个随机数,并通过数组存储用户输入的值,再对比每个元素与随机数是否相等,最终统计并输出相等的次数。