srand和rand
养成习惯!先给完整代码
#include<stdio.h>
#include <stdlib.h>//rand和srand都在这里哦
#include<time.h>
void game()
{
int number = 0;
int random = 0;
srand((unsigned int)time(NULL));//调用了<time.h>库中的time函数。后面会讲不要急哦
random = rand() % 100 + 1;
while (1)
{
printf("请猜数字>>");
scanf("%d", &number);
if (number < random){
printf("猜小咯\n");
}
else if (number > random){
printf("猜大啦\n");
}
else{
printf("哎哟喂!这你都能猜到?!\n");
break;
}
}
}
void menu()//游戏提示菜单
{
printf("***************************************************************\n");
printf("******* 1、play 2、exit ********\n");
printf("***************************************************************\n");
}
int main()
{
int quit=0;
do //游戏先出一步菜单,再进行选择开始游戏 or 退出游戏。
{
menu();
printf("请选择>>>");
scanf("%d", &quit);
switch(quit)//不清楚用户输入的是什么,用多分支确定
{
case 2:
printf("退出游戏。。。\n");
break;
case 1:
printf("游戏开始:\n");
game();
break;
default:
printf("选择错误,请重新选择。\n");
break;
}
} while (quit!=2);//用户不输入2退出游戏就重复进行选择 or 进行游戏
return 0;
}
rand函数定义:(后面要记笔记哦)
int rand(void)
显而易见,rand返回一个int型的随机数
rand()
返回随机数值的范围在 0 至 RAND_MAX 间。RAND_MAX 的范围最小是在32767(也就是一个int),0~RAND_MAX 每个数字被选中的机率是相同的。所以rand() 产生的是伪随机数字,每次执行时产生的数字是相同的; 如果要真正的不同, 需要用函数 srand()
初始化它
srand函数定义:
void srand(unsigned int seed)
srand()用来设置
rand()` 产生随机数时的随机数种子,未设定随机数种子时,系统默认的随机数种子为 1。
我们可以看出,srand()
接收一个无符号整型的参数,并且这个参数一旦写固定,rand()
每次运行产生的随机数值就会一样。所以我们要实现随机数的效果的话,可以使用时间戳做参数。时间戳指的是自1970年1月1日(00:00:00 UTC)以来的秒数。函数定义是:time_t time(time_t * timer)
,我们把time(NULL)传进去,这样每次执行程序的时间不同,随机数种子也就不同
int random = 0;
srand((unsigned int)time(NULL));//记得强制类型转换一下!srand接收的是无符号整型!
random = rand() % 100 + 1;//看到这又不懂了吧!继续往下看
要取得 [a,b) 的随机整数,使用 (rand() % (b-a))+ a;
要取得[a, b] 的随机整数,使用(rand() % (b - a + 1)) + a;
要取得(a, b] 的随机整数,使用(rand() % (b - a)) + a + 1;
要取得 a 到 b 之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得 0~1 之间的浮点数,可以使用 rand() / double(RAND_MAX)
通用公式: a + rand() % n;其中的 a 是起始值,n 是整数的范围。****博主给大家搜到了详细的解释,可以点这里去看
写点总结叭:
这是我第一篇正式的博客(当然上一篇也很正式啦,只是没有技术内容),以后会继续边学习边分享自己进步的过程的,希望可以给初入计算机世界的小白们提供一点点帮助,如果有网上搜不到的问题可以找我私聊,我如果不会的话可以帮你向我的老师提问哈哈哈哈!不管环境如何变化,拥有强大的能力并且使自己不断的进步蜕变才是可以劈波斩浪,成为中流砥柱的关键(我可不是说自己是大牛,我还差的远呢)
这次写的只是一些C语言的基础,本人也仅仅是一个刚上大学没几年的大学生,菜的一批,所以欢迎各位大牛莅临指导、批评指教噢!