目录
rand()
int rand(void) //rand()函数的声明
//返回一个区间内的随机数,区间大小会根据srand()函数变化
返回值
一个int类型的数字
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("%d",rand());
}
//运行结果
41
//运行结果可能会不相同,原因是因为rand()产生的随机数是随机产生的
分析
运行上述代码可以发现,当编译运行一次后,之后每次运行都显示的是第一次出现的数字,虽然第一次出现的是随机数,但是如果想每一次都出现随机数,那么就要用到srand()函数。
srand()
void srand(unsigned int seed); //srand的函数声明
//srand()函数是随机数发生器的初始化函数,配合rand()函数可以生成不同的随机数
返回值
srand()函数没有返回值类型
#include <stdio.h>
#include <stdlib.h>
main()
{
int x;
scanf("%d",&x);
srand(unsigned(x));
printf("%d",rand());
}
//运行结果
//运行后先输入一个数作为随机种子huiche
5
54
//再次运行,输入52
52
208
分析
通过输入设定的随机种子,可以使rand()函数每次随机出来的数都不相同,但每次都需要输入随机种子,比较麻烦,所以接下来引入另一个函数time()函数,不用每次输入即可获得均不相同的随机数。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
main(){
srand((unsigned(time(NULL))));
int x;
x=rand()%100+1;
printf("%d",x);
}
//运行结果每次都是1-100之内的数字
根据需要的区间范围,调整rand()取余的数,即可获得需要的区间随机数。
猜数字实例:
要求:
- 程序运行会产生一个1-100区间的随机数,用户输入一个1-100以内的数。
- 如果用户输入的数大于产生的随机数,输出big,反之输出small。
- 当用户输入的数字刚好与随机数相等时,输出Good luck!
- 程序结束
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
srand((unsigned int )time(NULL)); //设置一个随机种子,其中time(0)/time(NULL)是返回1970年到现在有多少秒,void srand(unsigned int seed)
int com=0,num=0; //com是电脑生成的随机数,num是人输入的数
// printf("%d",rand());
com=rand()%100 + 1; //rand()是根据srand产生的随机种子生成随机数并取余100,这样就生成了0-99的随机数
char *r;
while(1)
{
scanf("%d",&num);
if(num==com)
{
puts("Good luck!");
break;
}
else if(com<num)
puts("big");
else puts("small");
}
printf("%d",com);
return 0;
}
所有代码运行环境为Dev-C++5.11