如果之前学过python的小伙伴看到随机数这个知识点肯定会觉得很简单,但是c++的随机数就需要注意一些小细节了~
先来给大家展示一下python的随机数:
import random #导入随机数库
a=random.randint(100,200)#随机100-200之间的数字
以下是c++的:
#include<iostream>
#include<ctime>
#include<cstdlib>
//也可以直接使用万能头
using namespace std;
int main(){
srand(int(time(0)));
int a;
a=rand()%100+100;//随机100-200之间的数字
cout<<a;
return 0;
}
通过以上内容可以看到c++相较于python增加了一些库的使用,那为什么要增加这些库呢?
首先在C++中,可以使用rand()函数产生随机数。(rand()函数的头文件在<cstdlib>中)
可以看到生成的数字基本都比较大,如果想产生在一定范围内的数,可以用取余的方法获得。
如果想生成0—100之间的数字:
如果想生成100-200之间的数字,我们只需要在刚刚生成的数字后面加上100即可:
仔细观察这三张图片生成的数字,可以发现最后的两位数都是一样的。大家可能会好奇,为什么会这样呢?我想生成的明明是随机的。。。
这是因为虽然rand()产生的数是随机数,但是这些输出的结果在定义之后是不会再变化了,也就是固定了,每次重新编译后输出的结果是相同的。
那如果我们想每次编译后的结果不一样怎么办?
我们就需要利用到srand()函数了
不过在此之前,需要介绍另一个函数time()(头文件在<ctime>中)
time(0)可以输出一个与时间有关的数,再结合srand()函数即可产生真正的随机数。
(因为time时间每次都是变化着的,我们把时间当作随机数的种子种下去,这样每次生成的数字才是不一样的。程序如下:)
以上就是我们今天的所有内容啦,下面的程序是我写的一个猜数字游戏,大家可以自己拿去玩一下。
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
srand(int(time(0)));
int a,b;
a=rand()%100+100;
for(int i=1;i<=3;i++){
cin>>b;
if(b>a){
cout<<"猜大啦~"<<endl;
cout<<"小主您还有"<<3-i<<"次机会"<<endl;
}
else if(b<a){
cout<<"猜小啦~"<<endl;
cout<<"小主您还有"<<3-i<<"次机会"<<endl;
}
else{
cout<<"猜对啦~,恭喜小主胜利啦!!!"<<endl;
break;
}
}
cout<<"本次游戏的数字是"<<a<<endl;
return 0;
}