一个初入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()等等函数产生随机数的用法。相关推荐

  1. C语言在中math.h中sqrt()函数的使用

    C语言在中<math.h>中sqrt()函数的使用: 功 能: 计算一个非负实数的平方根 函数原型: 在VC6.0中的 math.h头文件的函数原型为double sqrt(double) ...

  2. C语言 -- string.h中函数功能详解与手动实现 - 02(常用函数memcpy、memmove、strcpy、strdup、strcat、strtok...)

    内容预览 3.5.搬迁类型 --- 函数功能详细说明 :将内存空间中内容移动.复制到另一内存空间 3.6.搬迁类型 --- 函数功能测试与手动实现 3.6.1.memcpy.memccpy 3.6.2 ...

  3. C语言 string.h 中函数的实现

            最近是校招很热的季节,实验室里讨论最多的也就是算法,面试和笔试的必备知识储备.昨天想起 C 语言中 string.h 中的函数在操作字符串时很方便,所以,就想起写写那些函数.     ...

  4. c语言中srand的作用,C语言中srand(), rand(), time()函数  转载

    srand函数 srand函数是随机数发生器的初始化函数. 原型:void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面的r ...

  5. time.h中的相关计时函数time,localtime,clock等详解

    C++对时间的操作也有许多值得大家注意的地方.最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作.获取和显示等等的问题.下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法 ...

  6. c语言编程单片机中的sbit,单片机sfr和sbit的用法

    描述 单片机sfr和sbit详解 sfr用于将一个单片机的特殊功能寄存器(special function register)赋值给一个变量,这样在后面的程序中就可以中这个变量指引(refer to) ...

  7. C语言time.h中clock()函数的使用

    C语言中求程序执行的时间可以使用clock()函数,_CRTIMP clock_t __cdecl __MINGW_NOTHROW clock (void);(可以把它直接视为clock_t cloc ...

  8. C语言math.h中的常用函数实例详解

    1.绝对值 2.取整和取余 3.三角函数 4.反三角函数 5.双曲三角函数 6.指数和对数 7.标准化浮点数 8.多项式 9.数学错误计算处理 1.绝对值 函数原型: int abs(int x); ...

  9. c语言intrins函数,【转载】KEIL C 头文件INTRINS.H中的几个函数说明

    原标题: [51单片机]keil C51中的本征函数库及使用说明 为方便自己查找,已将标题改名 原文来源:http://blog.163.com/hooyang@126/blog/static/118 ...

  10. C/C++中rand()函数产生随机数的用法

    一.rand() 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数.即,rand()会返回一个范围在0到RAND_MAX(32767)之间的伪 ...

最新文章

  1. k8s安装Prometheus
  2. Stream流的收集操作
  3. 【AI视野·今日Robot 机器人论文速览 第二期】Mon, 7 Jun 2021
  4. 如果苹果公司允许其他手机厂商使用iOS系统,对苹果公司来说会有什么好处?
  5. LinkedList线程安全问题
  6. hash签名 java_java开发区块链只需150行代码
  7. 在 Windows 10 中映射网络驱动器
  8. KiCad下载及安装教程
  9. 会员制营销的起源和基本原理
  10. 计算机如何调整对比度,怎么调整电脑显示器亮度和对比度
  11. 【Hadoop的初级理解】
  12. 给马云、马化腾订制旅行,这家公司想做旅游行业的“得到”
  13. ddl(ddl是什么意思网络语)
  14. 关于欧盟人工智能法案我们需要了解什么?
  15. C9、E9、Z14、五院四系…这些高校联盟,光听名字就觉得很厉害!
  16. H.266/VVC相关技术学习笔记16:VTM6.0中的CIIP技术(帧内帧间联合预测)
  17. 【哈夫曼树】牛客 哈夫曼树
  18. css单位vw vh,css3自适应布局单位vw,vh详解
  19. 966SEO学习网:火车头采集器使用教程(入门+高级)
  20. 下载工具MLDonkey的优化设置

热门文章

  1. Photoshop2019 系统错误 无法启动此程序修复教程
  2. 电脑城 Ghost XP SP3 笔记本专用版 2012.10
  3. (转)Spring事务异常回滚机制(出处在文末,转自李慕白大神)
  4. mysql gone away的几种原因
  5. 史上最详细的5-Why解说|优思学院
  6. UltraVNC源码编译运行
  7. 明星热图|童瑶、周迅、易烊千玺、张新成签约新品牌;李宇春、陈飞宇参加品牌活动...
  8. PIPIOJ 1169: PIPI倒水
  9. 训练赛 Discrete Logarithm Problem
  10. 如何学计算机打字,电脑怎么学打字