c语言中的随机函数为rand(),但是rand生成的值得大小主要相对一个变量才产生的一定有含义的数,这个相对的变量我们可以再srand()函数中进行设置,srand函数是void类型,内部含一个无符号整形

定义如下

如果我们不定义的话

重复执行下面的代码产生的效果可能是同一个数

但是如果在srand()中设置一个随时改变的参照量,那么每次执行产生的rand值就不会痛,
我们知道有一个函数time(),这个值是不断的改变的,我们可以将其嵌入在srand中,那么每次产生rand值就会是不同的
 
time()的返回是一个_int64 类型的数,time的定义是 time——t time(time_t *timer)
我们在定义的时候可以不使用返回类型time_t,我们只是调用time(time_t *timer)
那么我们的产生的随机值就存放在了*timer里面,后面我们可以通过只用指针*timer来调用我们产生的值
其中time产生的值就是unix的时间戳,产生的值是以秒为单位来进行计算的,时间的计算就是目前的时间与1970年1月1日0时0分0秒之间的决定值
只不过是用秒来表示,
同时里面的参数可以不为*timer,可以为NULL,也可以直接用0来代替,
 
 
srand()是void类型,我们在srand()里面嵌套不断变化的函数time(0),那么我们产生的随机数每时每刻的相对值都是不同的,所以产生的随机数也就是不同的
 
rand()函数是有返回值的,,至于要求产生多大范围内的数需要自己控制;
 
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-—————————
华丽的分割线
如果上面的理解了,下面是比较官方的解释方法
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
 
rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。
(1)使用该函数首先应在开头包含头文件stdlib.h
#include<stdlib.h>
(C++建议使用#include<cstdlib>,下同)
(2)在标准的c库中rand可以产生于一个0~rand_max之间的一个随机数,rand_max是stdlib中定义的一个数,与系统有关
(3)因为rand每次都是按照顺序产生固定的随机数,所以对于同一个程序,我们多次调用执行,会产生同样的数,也就是产生同样的效果,所以我们有时候也管随机数叫做伪随机数,
(4)为了使得每次随机数生成时都生成一个不同的随机数,也就是不同的随机数序列,所以我们每次都为随机数生成器提供一个新的随机种子,我们可以通过使用srand()产生种子进行散播种子,只要种子不同,我们通过调用rand就会生成不同的随机数,
 
 
 
srand成为随机数生成器的初始化器
 /* This program generates and prints ten random integers between 1 and RAND_MAX*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int seed; /*申明初始化器的种子,注意是unsigned int 型的*/
int k;
printf("Enter a positive integer seed value: \n");
scanf("%u",&seed);
srand(seed);
printf("Random Numbers are:\n");
for(k = ; k <= ; k++)
{
printf("%i",rand());
printf("\n");
}
return ;
}

当种子为1的时候,我们可以不使用srand,因为系统默认·的种子为1

stdlib.h 中这两个函数的原型是:
int rand();
void srand (unsigned int);
srand(time(0)); i=rand();
或者srand(time(NULL));
这样就是一个伪随机数。
rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数 time()返回的是系统的时间(从1970.1.1午夜算起),单位:秒,种子不同当然产生的随机数相同几率就很小了。
用rand()随机生成在[x,y]内的整数
int k;
k=x+rand()%(y-x+1)/*k即为所求范围内随机生成的数,rand()%a的结果最大为a-1*/
 
 
 
 
 

c语言随机函数&&时间函数的更多相关文章

  1. [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义

    C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...

  2. 常用C语言time时间函数

    常见的时间函数有time( ).ctime( ).gmtime( ).localtime( ).mktime( ).asctime( ).difftime( ).gettimeofday( ).set ...

  3. C语言的时间函数

    下面是C语言的获取本地时间和构造时间进行格式化时间显示输出的相关函数:This page is part of release 3.35 of the Linux man-pages project. ...

  4. R语言日期时间函数

    Sys.Date( ) returns today's date. date() returns the current date and time.# print today's datetoday ...

  5. C 语言 时间函数使用技巧(汇总)

    time.h 头文件 是 C 语言中 有关 时间的函数所储存的头文件 #include <time.h> 在介绍时间函数用法之前,我们首先要了解在 time.h 头文件中已经声明了的一个结 ...

  6. C语言 常用的时间函数

    //时间函数的使用 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include& ...

  7. Loadrunner时间函数、用时间生成订单编号例子

    Loadrunner中取时间函数.用时间函数生成订单编号例子: <如要转载,请注明网络来源及作者:Cheers_Lee> 问题的提出: (1)有时候在Loadrunner中用C语言设计脚本 ...

  8. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...

  9. Linux时间函数之gettimeofday()函数之使用方法

    1.简介: 在C语言中可以使用函数gettimeofday()函数来得到时间.它的精度可以达到微妙 2.函数原型: #include<sys/time.h> int gettimeofda ...

随机推荐

  1. springmvc @responseBody自动打包json出现错误(外键查询死循环)问题

    在外键字段的get方法上加入@JsonIgnore

  2. 第二次冲刺-Runner站立会议01

    今天做了什么:主要看了gridview的使用方法 遇到的困难:与适配器的链接不会 明天准备做什么:尽量将gridview与baseadapter适配器连接起来

  3. 改造rm命令为mv

    :刚在群里面看到小伙伴误操作把服务器上重要的文件给删掉了,于是google了下,找到一篇文章把rm命令改造成mv命令,源博客如下:http://blog.csdn.net/dataspark/arti ...

  4. ecshop 订单-》订单状态 2

    // 判断订单状态 public function get_order_status($os,$ps,$ss){ $arr = array('已取消','待付款','待发货','待收货','确认收货' ...

  5. MySQL笔记-最简单的方法来解决找不到mysqld.sock文件的问题

    首先,环境:ubuntu 14.04,采用apt-get的方式安装的,手动安装可能路径设置稍有区别. 1.安装MySQL后,用命令行首次启动时发现找不到Mysqld.sock文件,提示: ERROR ...

  6. mono中显示debug信息(filename/lineno)

    一直发现 mono 的 traceback 没有 fliename.lineno,很奇怪.研究了下,原来编译和运行时要加参数的. dmcs -debug /r:xunit.dll /t:library ...

  7. html 表格head头部不动 body部分滚动,每格宽同内容增加

    如下图同Excel表格首行固定: <style> .table{ width: 100%; border-collapse:collapse; border-spacing:0;} .ta ...

  8. Sql Server作业

    参考资料: http://jingyan.baidu.com/article/49ad8bce7287315834d8fab4.html

  9. 关于Mysql错误:./bin/mysqld_safe --user=mysql& [1] 32710 121003 16:40:22 mysqld_safe Logging to '/var/log/mysqld.log'. 121003 16:40:22 mysqld_s

    [root@www]# ./bin/mysqld_safe --user=mysql&[1] 32710[root@www]# 121003 16:40:22 mysqld_safe Logg ...

  10. hdu5072 Coprime (2014鞍山区域赛C题)(数论)

    http://acm.hdu.edu.cn/showproblem.php?pid=5072 题意:给出N个数,求有多少个三元组,满足三个数全部两两互质或全部两两不互质. 题解: http://dty ...