C语言 rand() srand() time.h 等的使用

发布于:2023-01-07 ⋅ 阅读:(494) ⋅ 点赞:(0)

rand和srand 随机数 C语言

#include<stdib.h>//需要调用头文件
//功能 函数返回一个在0到RAND_MAX(32767)之间的伪随机整数。
//但是,rand()的内部实现是用线性同余法实现的,是伪随机数。当周期较长,因此在一定范围内可以看成是随机的。
int rand(void);

//rand生成小数,生成特定范围数值等功能,可参考这片博文。
rand函数使用 C语言

既然随机数的是根据一定的规律生成,那么我们传入不同的参数,则能使其产生不同的结果。(如果不调用srand(),相当于默认执行了srand(1));

结合下面代码理解

代码案例:

#define _CRT_SECURE_NO_WARNINGS //vs 2022的scanf输入时,确保输入没问题。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main() {
	printf("%d ", rand() % 100);//该行永远输出固定的值
	srand(time(0));//设置随机种子的函数,也就是设置随机函数上一次的状态值
	//time(0)将返回一个时间戳,可将其视为与当前时间相关的整形数字
	printf("%d ", rand() % 100);//每次输出值不同
	/*
	第一个rand()输出运行结果均相同,这是因为我们没有设置随机种子,每次运行时
	rand()函数所记录的起始值均相同,所以每次的输出值都相同
	*/
	return 0;
}

运行结果:
在这里插入图片描述

因此借用srand()重新播种

#include<stdlib.h>
void srand(unsigned seed);
//对于给定的种子seed,rand()会反复产生特定的随机序列;
//为了使得每次随机的结果均不相同,那么设置不同的参数,考虑将当前时间变量设置为种子
//srand只需要在函数开始时,调用一次就行了
srand((unsign int)time(NULL));//一般引入与当前时间有关的变量

网站公告

今日签到

点亮在社区的每一天
去签到