写一个程序作为一个计算工具,显示两个随机整数相加的结果。要求学生输入答案,判断答案是否正确,如果正确输出结果,如果不正确给出提示,输出正确答案。随机数函数请自行查阅资料。
本题目的要求主要是考察对随机数生成的理解。
#include <iostream>
#include <ctime>
using namespace std;
int main(int argc, const char * argv[]) {
srand((int)time(0));
int a,b,sum;
a = rand()%5;
b = rand()%5;
sum = a+b;
cout<<a<<" "<<b<<endl; //这一行代码是用来输出两个随机数的值的,方便检验程序的正确性。
cout<<"请猜两个5以内的随机数的和为:";
int guess;//猜的数
cin>>guess;
if(guess==sum){
cout<<"你猜的数"<<sum<<"正确"<<endl;
}else{
cout<<"你猜的数错误,正确答案是:"<<sum<<endl;
}
return 0;
}
输出结果:
说明:
①:#include <ctime>的引用,在本题中删掉代码正常使用。
②:如果将srand((int)time(0));这句的代码删除的话,每一次生成的随机数都是固定的,不会随着每次运行而变化。
计算机没有办法产生真正的随机数的,是用算法模拟,所以你只调用rand,每次出来的东西是一样的。设置一个种子后,根据种子的不同,就可以产生不同的数了。而怎么保证种子的不同呢?最简单的办法当然是用永远在向前的时间。
srand(time(0)) ;//先设置种子
rand();//然后产生随机数
Srand是种下随机种子数,你每回种下的种子不一样,用Rand得到的随机数就不一样。为了每回种下一个不一样的种子,所以就选用Time(0),Time(0)是得到当前时时间值(因为每时每刻时间是不一样的了)。
srand(time(0)) ;
就是给这个算法一个启动种子,也就是算法的随机种子数,有这个数以后才可以产生随机数