C语言time.h中srand(),rand()等等函数产生随机数的用法。
一个初入C语言的人,会经常遇到产生随机数的问题。不管是ACM还一些别的教材上的题,或多或少都会遇到。我在这里也是为了自己加深印象,所以在这里写一遍。
rand()函数简介
功 能 :伪随机数发生器
所属库:stdlib.h
用 法 :需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每行代码都可以产生不同的随机数。
函数原型:int rand(void);
接下来我们写一段代码来获取10个随机数
include <stdio.h>
include <stdlib.h>
int main()
{
int i;
printf("输出0-99之间的随机数:\n");
for (i = 0; i<10; i++)
printf("%d ", rand() % 100);
system("pause");
return 0;
}
srand()函数简介
srand函数是随机数发生器的初始化函数。
原型:void srand(unsigned seed);
用法:它需要提供一个种子,这个种子会对应一个随机数,
如果使用相同的种子, 后面的rand() 函数会出现一样的随机数。
如: srand(1); 直接使用1来初始化种子。
下来我们用获取随机数方法的例子来介绍strand()函数:
1、这个代码为我们自己手动输入srand()函数的参数seed,我用seed=1来举例
#include <stdlib.h> //用到了srand函数,所以要有这个头文件
#include <stdio.h>
#include <time.h> //用到了time函数,所以要有这个头文件
int main()
{
int arr[10] = { 0 };
int i;
unsigned int seed;
scanf("%d", &seed);//手动输入种子
srand(seed);
for (i = 0; i < 10; i++)
{
arr[i] = rand() % 100; //产生100以内的随机整数 接下来我们会介绍到rand函数
printf("%d .", arr[i]);
}
system("pause");
return 0;
}
关于time()函数
2、我们可以发现手动输入参数很可能出现随机数重复,为了防止随机数每次重复常常使用系统时间来初始化,接下来就要用到time()函数解决
使用 time函数来获得系统时间,它的返回值为从 00:00 : 00 GMT, January 1, 1970
到现在所持续的秒数(即从1970年1月1日的00 : 00 : 00到当前你所处的时间所经过的秒数),
然后将time_t型数据转化为(unsigned)型再传给srand函数,即: srand((unsigned)time(&t));
还有一个经常用法,(我们经常用这个方法)不需要定义time_t型t变量, 即: srand((unsigned)time(NULL));
直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。
srand((int)getpid());
使用程序的ID(getpid())来作为初始化种子,在同一个程序中这个种子是固定的。
接下来我们写一段代码举例说明:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
int arr[10] = { 0 };
int i;
srand((unsigned)time(NULL));//调用time函数来获取随机数
for (i = 0; i < 10; i++)
{
arr[i] = rand() % 100;
printf("%d.", arr[i]);
}
system("pause");
return 0;
}
C语言time.h中srand(),rand()等等函数产生随机数的用法。相关推荐
- C语言在中math.h中sqrt()函数的使用
C语言在中<math.h>中sqrt()函数的使用: 功 能: 计算一个非负实数的平方根 函数原型: 在VC6.0中的 math.h头文件的函数原型为double sqrt(double) ...
- C语言 -- string.h中函数功能详解与手动实现 - 02(常用函数memcpy、memmove、strcpy、strdup、strcat、strtok...)
内容预览 3.5.搬迁类型 --- 函数功能详细说明 :将内存空间中内容移动.复制到另一内存空间 3.6.搬迁类型 --- 函数功能测试与手动实现 3.6.1.memcpy.memccpy 3.6.2 ...
- C语言 string.h 中函数的实现
最近是校招很热的季节,实验室里讨论最多的也就是算法,面试和笔试的必备知识储备.昨天想起 C 语言中 string.h 中的函数在操作字符串时很方便,所以,就想起写写那些函数. ...
- c语言中srand的作用,C语言中srand(), rand(), time()函数 转载
srand函数 srand函数是随机数发生器的初始化函数. 原型:void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面的r ...
- time.h中的相关计时函数time,localtime,clock等详解
C++对时间的操作也有许多值得大家注意的地方.最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作.获取和显示等等的问题.下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法 ...
- c语言编程单片机中的sbit,单片机sfr和sbit的用法
描述 单片机sfr和sbit详解 sfr用于将一个单片机的特殊功能寄存器(special function register)赋值给一个变量,这样在后面的程序中就可以中这个变量指引(refer to) ...
- C语言time.h中clock()函数的使用
C语言中求程序执行的时间可以使用clock()函数,_CRTIMP clock_t __cdecl __MINGW_NOTHROW clock (void);(可以把它直接视为clock_t cloc ...
- C语言math.h中的常用函数实例详解
1.绝对值 2.取整和取余 3.三角函数 4.反三角函数 5.双曲三角函数 6.指数和对数 7.标准化浮点数 8.多项式 9.数学错误计算处理 1.绝对值 函数原型: int abs(int x); ...
- c语言intrins函数,【转载】KEIL C 头文件INTRINS.H中的几个函数说明
原标题: [51单片机]keil C51中的本征函数库及使用说明 为方便自己查找,已将标题改名 原文来源:http://blog.163.com/hooyang@126/blog/static/118 ...
- C/C++中rand()函数产生随机数的用法
一.rand() 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数.即,rand()会返回一个范围在0到RAND_MAX(32767)之间的伪 ...
最新文章
- k8s安装Prometheus
- Stream流的收集操作
- 【AI视野·今日Robot 机器人论文速览 第二期】Mon, 7 Jun 2021
- 如果苹果公司允许其他手机厂商使用iOS系统,对苹果公司来说会有什么好处?
- LinkedList线程安全问题
- hash签名 java_java开发区块链只需150行代码
- 在 Windows 10 中映射网络驱动器
- KiCad下载及安装教程
- 会员制营销的起源和基本原理
- 计算机如何调整对比度,怎么调整电脑显示器亮度和对比度
- 【Hadoop的初级理解】
- 给马云、马化腾订制旅行,这家公司想做旅游行业的“得到”
- ddl(ddl是什么意思网络语)
- 关于欧盟人工智能法案我们需要了解什么?
- C9、E9、Z14、五院四系…这些高校联盟,光听名字就觉得很厉害!
- H.266/VVC相关技术学习笔记16:VTM6.0中的CIIP技术(帧内帧间联合预测)
- 【哈夫曼树】牛客 哈夫曼树
- css单位vw vh,css3自适应布局单位vw,vh详解
- 966SEO学习网:火车头采集器使用教程(入门+高级)
- 下载工具MLDonkey的优化设置
热门文章
- Photoshop2019 系统错误 无法启动此程序修复教程
- 电脑城 Ghost XP SP3 笔记本专用版 2012.10
- (转)Spring事务异常回滚机制(出处在文末,转自李慕白大神)
- mysql gone away的几种原因
- 史上最详细的5-Why解说|优思学院
- UltraVNC源码编译运行
- 明星热图|童瑶、周迅、易烊千玺、张新成签约新品牌;李宇春、陈飞宇参加品牌活动...
- PIPIOJ 1169: PIPI倒水
- 训练赛 Discrete Logarithm Problem
- 如何学计算机打字,电脑怎么学打字