1.用这俩rand(),srand() 函数要加头文件<stdlib.h>
2.用time()函数要加头文件<time.h>
int a;
a=rand(void)
//不需要参数但产生一次随机数以后,这个随机数就固定了,也就是每次打开程序都是哪一个数
//rand()会随机生成一个0~RAND_MAX之间的整数
//RAND_MAX是<stdlib.h> 头文件中的一个宏,可以当作很大的数,用来指明rand函数返回的随机数的最大值
所以需要srand()函数重新播种,种子变化,每次产生的随机数都回变
意思是,好比你使用rand()函数
里面虽然没有参数,但你可以想象成里面是一种农作物的种子
你每次使用这个rand函数相当于播种一次这个农作物
然后产生的随机数都是这个农作物的成果---
然后你下一次还是这个种子,这样随机数还是上一次那个--毕竟种啥得啥嘛,种子也没换
这样就需要 srand 函数来换种子。
这个函数需要在rand函数前面--毕竟你得先换种子,才能播种嘛
void srand(unsigned int seed)
? ?//它需要一个unsigned int类型的参数
? ?//如果你想自己换
? ?void srand(n);//n为一个unsigned int类型的正整数
//表示出现的随机数不会小于n,但是这个数每次打开都是这个数
? ?//seed就是你自己设置的一个数,但是随机数嘛,你得让它自己换
? ?//这样我们就可以用到 time()函数---可以得到当前的时间(精确到秒)
//这样
? ?void ((unsigned)time(NULL))
? ? ? ?//time(NULL)-- 获取的是1970年1月1日到现在之间有多少秒
? ? ? ?//然后时间每时每刻都在变,所以随机数一直在变化
? ? ? (unsigned)time(NULL)//这个是强制类型转换
? ? ? ?//将time返回值强行转换为unsigned int(可以简写为unsigned)类型
整体用法: ? ?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
? ?int a;//声明一个变量
? ?srand((unsigned)time(NULL));//随机产生个种子
? ?a = rand();//随机产生个随机数
? ?printf("%d\n", a);
? ?return 0;
}
生成一定范围的随机数
实际开发中,我们需要一定范围内的随机数---可以用取模(就是取余数)的方法
int a=rand()%10//产生0~9的随机数,
? ?//%n--就是产生0~n的随机数
? ?//%n+m--就是产生m~(n+m)的范围
? ?//例如:
? ?int a=rand()%21+10;
? ?//产生10~31的随机数
|