【菜鸟C++学习杂记】随机数以及猜数字游戏

        笔者之前主要开发语言为C#,随机数实现较为容易,一个Random函数即可。在C++猜数字游戏中,由于C++没有写好的Random函数,想要实现随机数则需要使用rand()以及srand()函数。

        1、一开始时只加了rand(),但是测试几次发现,从零到一百随机的结果一直为42,不禁陷入了沉思,遂查阅资料得出rand() 的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的,产生的是伪随机数字,每次执行时是相同的; 若想要实现真随机,需要用函数 srand() 初始化它。

        rand()使用方法为int rand(void)

要取得 [a,b) 的随机整数,使用 (rand() % (b-a))+ a;

要取得 [a,b] 的随机整数,使用 (rand() % (b-a+1))+ a;

要取得 (a,b] 的随机整数,使用 (rand() % (b-a))+ a + 1;

通用公式: a + rand() % n;其中的 a 是起始值,n 是整数的范围。

要取得 a 到 b 之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。

要取得 0~1 之间的浮点数,可以使用 rand() / double(RAND_MAX)。

        2、srand()为初始化随机数发生器,其用来设置产生随机数时的随机数种子,随机数种子seed若每次设置为相同时,则随机数也相同,由于每次程序运行的时间不同,所以可以引入time来实现不同的种子。rand()会根据srand()的种子值返回一个随机数。

        srand()使用方法为void srand(unsigned int seed)

        3、明白随机数产生之后,即可完成猜数字的游戏。

#include<iostream>
#include <cstdlib>//rand
#include <ctime>//time
using namespace std;
int main() {
	srand((int)time(0));
	int num = rand() % 100 + 1;
	int guess = 0;
	cout << "请输入你猜的数字(范围为0-100)-->" << endl;
	cin >> guess;
	while (num != guess) {
		if (guess < num) {
			cout << "您猜的数字过小,请输入你猜的数字(范围为0-100)-->" << endl;
			cin >> guess;
		}
		else if (guess > num) {
			cout << "您猜的数字过大,请输入你猜的数字(范围为0-100)-->" << endl;
			cin >> guess;
		}
	}
	cout << "恭喜猜对" << endl;
	return 0;
}

rand()几种随机范围参考:https://www.runoob.com/w3cnote/cpp-rand-srand.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值