srand函数

srand函数是随机数发生器的初始化函数。

原型:void srand(unsigned seed);

用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面的rand() 函数会出现一样的随机数。如:

srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复常常使用系统时间来初始化,即使用

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())来作为初始化种子,在同一个程序中这个种子是固定的。

例1(C语言)

随机输出十个0-100之间的整数

程序例1:

#include

#include

#include

#define MAX 10

int main( void)

{

int number[MAX] = {0};

int i;

unsigned int seed;

scanf("%d",&seed);

srand(seed);

for(i = 0; i < MAX; i++)

{

number[i] = rand() % 100;

printf("%d ", number[i]);

}

printf("\n");

return 0;

}

例2(C语言)

程序例2:

#include

#include

#include

#define MAX 10

int main( void)

{

int number[MAX] = {0};

int i;

srand((unsigned) time(NULL));

for(i = 0; i < MAX; i++)

{

number[i] = rand() % 100;

printf("%d ", number[i]);

}

printf("\n");

return 0;

}

例3(C++)

#include

#include

#include

using namespace std;

int main()

{

double random(double,double);

srand(unsigned(time(0)));

for (int icnt = 0; icnt != 10; ++icnt)

{

cout

<< "No." << icnt+1 << ": " <<

int(random(0,10))<< endl;

}

return 0;

}

double random(double start, double end)

{

return start+(end-start)*rand()/(RAND_MAX+ 1.0);

}

在VC++6.0中输出的结果是:

==========================================

No.1: 6

No.2: 3

No.3: 8

No.4: 7

No.5: 0

No.6: 8

No.7: 4

No.8: 8

No.9: 7

No.10: 9

==========================================

rand函数

简介

功 能::

所属库:stdlib.h

用 法:

需要先调用srand初始化,一般用当前

行代码都可以产生不同的随机数。

函数原型:int rand(void);

程序例

程序1:

#include "stdio.h"

#include "stdlib.h"

int main(void)

{

int i;

printf("Ten random numbers from 0 to 99\n\n");

for(i=0; i<10; i++)

printf("%d\n",

rand() % 100);

return 0;

}

例1程序在每次运行时都会生成相同的十个伪随机数,

如要每次生成的随机数不同应结合srand函数和time函数。如下:

程序例2:

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int main(void)

{

int i;

srand((unsigned int)time(NULL));

printf("Ten random numbers from 0 to 99\n\n");

for(i=0; i<10; i++)

printf("%d\n", rand() % 100);

return 0;

}

解释:

其中rand()0中的“100”是可变量,也就是随机产生时的最大值(100-1=99)。产生随机数的范围是[0,100),如果不采用srand((unsigned

int)time(NULL));程序会默认调用srand(1)。伪整型随机数[a,b)

如果要取得[a,b)之间的数,则

num = rand()%(b-a) +

a;

伪浮点随机数[a,b)

fnum = rand() /(double)(RAND_MAX/(b-a)) +

a;

注:a,b均为整数,a != b,且a >= 0;

time函数

函数名:time

头文件:time.h

函数原型:time_t time(time_t *

timer)

功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated

Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct

tm类型,该类型的各数据成员分别表示年月日时分秒。

补充说明:

time函数的原型也可以理解为

long time(long

*tloc),即返回一个long型整数。因为在time.h这个头文件中time_t实际上就是:

#ifndef _TIME_T_DEFINED

typedef long time_t;

#define _TIME_T_DEFINED

#endif

即long。

函数应用举例

time函数获得日历时间。日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。

程序例1:

#include

#include

#include

int main(void)

{

time_t

t;

t = time(NULL);

printf("The number of seconds since January 1, 1970 is

%ld",t);

return 0;

}

程序例2:

//time函数也常用于随机数的生成,用日历时间作为种子。

#include

#include

#include

int main(void)

{

int i;

srand((unsigned)time(NULL));

printf("ten random numbers from 0 to 99\n\n");

for (i=0; i<10; i++)

{

printf("%d\n", rand()0);

}

return

0;

}

程序例3:

用time()函数结合其他函数(如:localtime、

#include

#include

#include

int main(void)

{

time_t timer;

// time_t就是long int 类型

struct tm *tblock;

timer = time(NULL); //

这一句也可以改成time(&timer);

tblock = localtime(&timer);

printf("Local time is:

%s\n",asctime(tblock));

return 0;

}

在VC++6.0中输出的结果是:

===============================

Local

time is: Tue Mar 20 20:34:31 2012

c语言中srand的作用,C语言中srand(), rand(), time()函数  转载相关推荐

  1. c语言中 amp 的作用,c语言中“amp;amp;”什么意思

    c语言中"&&"什么意思 在c语言中,"&&"是"与"."并且"的意思.它是逻辑运算符, ...

  2. 在c语言中fun的作用是什么,c语言的fun函数用法

    优质回答 回答者:销魂 fun不是库函数,一般是由用户自定义的函数,以它作为名字,比如: int fun(int m,int n) { int max; max=m>n?m:n; return ...

  3. C语言中fscanf的作用,C语言中fgets和fscanf区别详解

    搜索热词 C语言中fgets和fscanf区别详解 一.作用上的大概区别: ①fgets:从文件中读取一行数据存入缓冲区(fgets遇到回车才会结束,不对空格和回车做任何转换就录入到缓冲区,结束后再往 ...

  4. c语言中argc的作用,C语言中main函数的参数argc和argv

    参考资料: C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* arg ...

  5. c语言中endif的作用,C语言中#ifdef,#ifndef和#endif的作用

    现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中.否则如果出现有定义,比如头文件中有int a =2;如果有多个 ...

  6. c语言中fopen的作用,c语言中fopen的用法

    在C语言中,fopen也是一个打开文件的函数.在C语言的命令窗口中输入doc fopen或者help fopen就可以获得该函数的帮助信息.下面小编就跟你们详细介绍下c语言中fopen的用法,希望对你 ...

  7. 在c语言中 auto的作用,c语言中auto是什么意思

    说起auto相信很多人都不知道是什么意思,下面php中文网就带领大家学习一下c语言中auto是什么意思. auto是C语言的一个关键字,关键字主要用于声明变量的生存期为自动,即将不在任何类.结构.枚举 ...

  8. c语言中funx的作用,c语言中fun用法详解

    C语言中fun用法详解 fun函数是自定义的C/C++语言函数,函数功能多样.该函数名为"函数"英文function的简写,一般在示例和试题中使用,通常在主函数中被调用. C/C+ ...

  9. 在c语言中for的作用,c语言中for语句的用法

    C语言语言中FOR的用法 for 是一个循环语句,和while是类似的,for一般的用法有: for(i=0;i<10;i++) { printf("hello world" ...

最新文章

  1. Spring data redis 异常
  2. java catch getm_Java------异常处理机制
  3. 计算机应用乘法,计算机系统原理(十) 二进制整数的乘法运算和除法运算
  4. LeetCode 1237. 找出给定方程的正整数解
  5. deepfake ai智能换脸_AI 换脸、声音篡改等,明确写入新版民法典!
  6. 追踪监听(TraceListener)
  7. 无源波分和彩光模块_纯无源粗波分复用器(CWDM)部署4/5G网络,节省光缆资源...
  8. anaconda安装-清华镜像库
  9. el-dropdown的command需要传入多个参数的解决方案
  10. javaScript入门
  11. 计算机英语(第四版)
  12. 使用anysdk打包android渠道
  13. Mathematica note
  14. 基于testNG的数据驱动测试的自动化测试实践(一)
  15. 微信小程序下载视频到相册(带进度条)
  16. 6612345免费网页打印浏览器
  17. php 公众号发表文章,微信公众号如何发布文章(一套完整的流程)
  18. Java面试-001
  19. WordCount的理解与MapReduce的执行过程
  20. 形式逻辑三大基本要素-推理的本质

热门文章

  1. 开发实践丨用小熊派STM32开发板模拟自动售货机
  2. 前端开发还可以这么玩?元数据实践分享
  3. 【华为云技术分享】云小课 | 磁盘容量不够用?小课教你来扩容!
  4. 【华为云技术分享】云图说 | 华为云MCP多云容器平台,让您轻松灾备!
  5. 【Python算法】分类与预测——logistic回归分析
  6. webpack4.0各个击破(7)—— plugin篇
  7. android studio 中怎么写aspectj代码,Android Studio 使用 AspectJ 实践AOP
  8. c语言如何运行txt文件,如何使用EOF在C中运行文本文件?
  9. oracle 交叉链接,Oracle里的交叉SQL语句写法-数据库专栏,ORACLE
  10. C#学习体会(一)特性和反射