版权声明:本文为博主原创文章,未经博主允许不得转载。    https://blog.csdn.net/jx232515/article/details/51510336
srand函数是随机数发生器的初始化函数。原型:void srand(unsigned seed);

用法:它初始化随机种子,会提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数,如: srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型再传给srand函数,即: srand((unsigned) time(&t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的数据。

进一步说明下:计算机并不能产生真正的随机数,而是已经编写好的一些无规则排列的数字存储在电脑里,把这些数字划分为若干相等的N份,并为每份加上一个编号用srand()函数获取这个编号,然后rand()就按顺序获取这些数字,当srand()的参数值固定的时候,rand()获得的数也是固定的,所以一般srand的参数用time(NULL),因为系统的时间一直在变,所以rand()获得的数,也就一直在变,相当于是随机数了。只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。 即:只需在主程序开始处调用srand((unsigned)time(NULL)); 后面直接用rand就可以了。不要在for等循环放置srand((unsigned)time(NULL));

 void test_rand(void){unsigned long n;srand((unsigned)time(NULL));for(int i = 0; i < 100; i++){n = rand();printf("d\n", n);}
}

srand((unsigned)time(NULL))详解相关推荐

  1. C语言srand((unsigned)time(NULL))…

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

  2. 关于srand((unsigned)time(NULL))是初始化随机函数种子

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

  3. (*(volatile unsigned int *))详解

    (*(volatile un 从日剧看日本单身狗现状 登录注册 阿拉丁神丢的博客 http://blog.sina.com.cn/ddlovetechnology [订阅][手机订阅] 首页博文目录图 ...

  4. rand()函数与srand()函数以及随机数种子详解

    目录 引言 rand()函数 随机数 srand()函数 拓展思考 引言 初学者大部分对这两个函数的意义都不甚了解,以及不明白为什么需要srand()函数来播种,这里会对两函数的意义进行解释,让大家明 ...

  5. srand()和rand()函数详解

    头文件 C语言:<stdlib.h> C++ :<stdlib.h> 或<cstdlib> 函数原型 int rand(void): void srand(unsi ...

  6. C++随机数(rand和srand)函数用法详解

    C++ 提供了一组函数以生成和使用随机数字.随机数字就是从一组可能的值中进行随机选择而获得的一个值.该组中的值都有相同的被选中的几率. 随机数字常用于许多不同类型的程序中,以下是一些示例: 计算机游戏 ...

  7. Oracle中的NULL(二、NULL详解)

    2019独角兽企业重金招聘Python工程师标准>>> 说明:本篇文章是摘取自以下链接的Blog,但作者的这篇文章也是转载(非常感谢),我在记录的时候也有添加自己的思考. http: ...

  8. c语言stdio中null的值,C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解

    原创 程序员无言 2020-07-01 在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面 ...

  9. C语言空指针NULL详解

    空指针NULL: 在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示.例如: int *p = NULL; NULL 是一个宏定义,在stdio.h被定义为: #define ...

最新文章

  1. Metasploit irb命令使用技巧
  2. python大神-python大神教你在最短时间内学会爬取大规模数据
  3. STM32 基础系列教程 48 – CJSON
  4. swagger快速开发
  5. Python实训day13am【Python网络爬虫综合大作业PPT】
  6. unipapp 解决无法编译sass_如何解决Vue项目里面没有sassloader依赖包的问题
  7. 管理类软件设计“渔”之演化
  8. 2018年工业机器人销量排位_长安-2018年11月汽车销量 细分销量
  9. WCF服务实例激活类型编程与开发(转)
  10. pycharm快捷键_春节快结束了回单位途中总结下pycharm快捷键
  11. C++实现对数学基本运算表达式的解析
  12. C#例子 易懂故事 接口 委托 事件 异步通知 好玩.
  13. 大学计算机应用基础教程第三章,计算机应用基础教程 李健苹 计算机应用基础教程 第3章...
  14. UC大裁员:全体带薪休假至3月31日,补偿措施羡煞网友!
  15. XManager连接CentOS6.5
  16. 打印101~200之间的素数
  17. 基于STM32的手势识别检测
  18. TeXLive升级教程
  19. HDU6438 Buy and Resell
  20. 为什么会有视频号?朋友圈还不够吗?

热门文章

  1. 带你搭一个SpringBoot+SpringData JPA的环境
  2. 04:sqlalchemy操作数据库 不错
  3. merge into使用方法
  4. Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用
  5. Go 学习笔记(11)— 切片定义、切片初始化、数组和切片差异、字符串和切片转换、len()、cap()、空 nil 切片、append()、copy() 函数、删除切片元素
  6. Auty 2017——WebMonitor接口线上检测平台
  7. Android Acitivity 生命周期
  8. 用sed 给文本文件加行号
  9. 使用.NET FileSystemWatcher对象监控磁盘文件目录的改变
  10. ChineseCalendar类[转]