srand((unsigned)time(NULL))详解
版权声明:本文为博主原创文章,未经博主允许不得转载。 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))详解相关推荐
- C语言srand((unsigned)time(NULL))…
srand函数是随机数发生器的初始化函数. 原型:void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出 ...
- 关于srand((unsigned)time(NULL))是初始化随机函数种子
srand函数是随机数发生器的初始化函数.原型:void srand(unsigned seed); 用法:它初始化随机种子,会提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand ...
- (*(volatile unsigned int *))详解
(*(volatile un 从日剧看日本单身狗现状 登录注册 阿拉丁神丢的博客 http://blog.sina.com.cn/ddlovetechnology [订阅][手机订阅] 首页博文目录图 ...
- rand()函数与srand()函数以及随机数种子详解
目录 引言 rand()函数 随机数 srand()函数 拓展思考 引言 初学者大部分对这两个函数的意义都不甚了解,以及不明白为什么需要srand()函数来播种,这里会对两函数的意义进行解释,让大家明 ...
- srand()和rand()函数详解
头文件 C语言:<stdlib.h> C++ :<stdlib.h> 或<cstdlib> 函数原型 int rand(void): void srand(unsi ...
- C++随机数(rand和srand)函数用法详解
C++ 提供了一组函数以生成和使用随机数字.随机数字就是从一组可能的值中进行随机选择而获得的一个值.该组中的值都有相同的被选中的几率. 随机数字常用于许多不同类型的程序中,以下是一些示例: 计算机游戏 ...
- Oracle中的NULL(二、NULL详解)
2019独角兽企业重金招聘Python工程师标准>>> 说明:本篇文章是摘取自以下链接的Blog,但作者的这篇文章也是转载(非常感谢),我在记录的时候也有添加自己的思考. http: ...
- c语言stdio中null的值,C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解
原创 程序员无言 2020-07-01 在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面 ...
- C语言空指针NULL详解
空指针NULL: 在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示.例如: int *p = NULL; NULL 是一个宏定义,在stdio.h被定义为: #define ...
最新文章
- Metasploit irb命令使用技巧
- python大神-python大神教你在最短时间内学会爬取大规模数据
- STM32 基础系列教程 48 – CJSON
- swagger快速开发
- Python实训day13am【Python网络爬虫综合大作业PPT】
- unipapp 解决无法编译sass_如何解决Vue项目里面没有sassloader依赖包的问题
- 管理类软件设计“渔”之演化
- 2018年工业机器人销量排位_长安-2018年11月汽车销量 细分销量
- WCF服务实例激活类型编程与开发(转)
- pycharm快捷键_春节快结束了回单位途中总结下pycharm快捷键
- C++实现对数学基本运算表达式的解析
- C#例子 易懂故事 接口 委托 事件 异步通知 好玩.
- 大学计算机应用基础教程第三章,计算机应用基础教程 李健苹 计算机应用基础教程 第3章...
- UC大裁员:全体带薪休假至3月31日,补偿措施羡煞网友!
- XManager连接CentOS6.5
- 打印101~200之间的素数
- 基于STM32的手势识别检测
- TeXLive升级教程
- HDU6438 Buy and Resell
- 为什么会有视频号?朋友圈还不够吗?
热门文章
- 带你搭一个SpringBoot+SpringData JPA的环境
- 04:sqlalchemy操作数据库 不错
- merge into使用方法
- Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用
- Go 学习笔记(11)— 切片定义、切片初始化、数组和切片差异、字符串和切片转换、len()、cap()、空 nil 切片、append()、copy() 函数、删除切片元素
- Auty 2017——WebMonitor接口线上检测平台
- Android Acitivity 生命周期
- 用sed 给文本文件加行号
- 使用.NET FileSystemWatcher对象监控磁盘文件目录的改变
- ChineseCalendar类[转]