来做一个猜数游戏吧
一个猜数小游戏
分析
- 首先尝试接受用户的一个输入数字
- 生成一个随机数
- 进入游戏循环主体中
- 输入数字大于随机数:输出大了,循环继续
- 输入数字小于随机数:输入小了,循环继续
- 输入数字等于随机数:猜对了,退出循环
- 结束程序
程序源码
1 |
|
源码分析
随机数引擎
要在C++中使用
首先,确保已经包含了
<random>
头文件。在文件的开头添加以下代码:#include <random>
接下来,创建一个
std::random_device
对象,用于生成随机种子。这可以确保每次运行程序时生成的随机数不同。std::random_device rd;
使用
std::seed
函数,将random_device对象生成的随机种子用于初始化std::mt19937随机数生成器。std::mt19937 gen(rd());
使用
std::uniform_int_distribution
对象,指定随机数的范围。例如,要生成0到100之间的随机数,可以使用以下代码:std::uniform_int_distribution<> distrib(0, 100);
使用distrib对象生成随机数,并将其存储在变量中。
const auto random_number = distrib(gen);
std::mt19937
是一个Mersenne Twister伪随机数生成器,它是C++标准库中的一个均匀分布随机数生成器。Mersenne Twister是一种广泛使用的随机数生成器,其性能和分布非常广泛,因此在许多应用中都被广泛使用。
std::mt19937
的构造函数接受一个random_device对象作为参数,该对象用于生成随机种子。通过使用random_device,可以确保每次运行程序时生成的随机数不同。
std::mt19937
生成的随机数服从均匀分布,即在指定的区间内等概率地取值。
const 和 auto
const 关键字用于声明常量,即在程序运行期间其值不能被修改的量。
1 |
|
auto 关键字用于声明自动类型变量,即编译器会根据初始值自动推断出变量的类型。
1 |
|
主体判断框架
使用while循环,在循环体中判断条件是否成立,如果条件成立,则执行循环体,否则退出循环。
用户如果输入错误数值,那么就一直循环,直到输入正确为止。
用户输入正确,那么就会通过break跳出循环。
整体解释
- 引入所需的头文件,包括
(用于随机数生成器)和 (用于输入输出)。 - 在main函数中,定义一个random_device对象,用于生成随机种子。
- 定义一个std::mt19937对象,作为随机数生成器,并将random_device对象作为参数传递。
- 定义一个std::uniform_int_distribution对象,用于生成1到100之间的随机整数。
- 使用distribution对象生成一个随机整数,并将其存储在random_number变量中。
- 使用std::cout输出随机数。
- 定义一个guessing_number变量,用于存储用户输入的数字。
- 使用一个while循环,直到用户猜对数字为止。
- 在循环中,使用std::cin从用户输入一个数字,并将其存储在guessing_number变量中。
- 使用std::cout输出用户输入的数字。
- 如果guessing_number大于random_number,则输出“Too high”。
- 如果guessing_number小于random_number,则输出“Too low”。
- 如果guessing_number等于random_number,则输出“You got it!”并跳出循环。
- 最后,return 0表示程序正常退出。