C++ 随机数函数rand()与srand()的思考
所谓的随机,实际上是伪随机。(真随机应该是每次需要随机数时都实时随机产生)
随机数函数的实质是:
每次调用rand()
前,(第一次调用rand()
)系统通过随机数种子生成一个随机数队列。每次调用rand()
时,直接从该随机队列里依次获取下一随机数。
随机数种子对于随机数序列至关重要。随机数种子可以通过srand()
设置。
通常的设置方法为:srand((int)time(null))
,使用时间戳作为种子可以保证每次生成的随机数序列都不一样。当然,在一秒钟内除外。
随机数种子一样,生成的随机数序列也就一样。如果不使用srand()
设置随机数种子,随机数种子为默认值0。带来的影响是:每次生成的随机数序列都一样。
下面程序中,每次的结果都会一样,这肯定不是我们想要的结果。
for (int idx = 0; idx < 10; ++idx)
{std::cout << rand() % 10 << " ";
}std::cout << std::endl;
你需要以当前时间戳作为参数调用srand()
:
srand((int)time(null));
for (int idx = 0; idx < 10; ++idx)
{std::cout << rand() % 10 << " ";
}std::cout << std::endl;
C++ 随机数函数rand()与srand()的思考相关推荐
- 【C语言】随机数函数rand和srand
文章目录 一.随机数函数 1.rand().srand() 2.time() 二.案例实现 1.案例描述 2.代码实现 一.随机数函数 1.rand().srand() C语言产生随机数要用到的函数是 ...
- 随机数函数rand()和srand()的区别
引子 相信大家对于rand()函数并不陌生,我们常用它来生成伪随机数,但是为什么有时候我们生成的随机数并不符合预期呢?或者说,为什么有时候我们生成的随机数并不随机?如何有效地生成伪随机数呢? rand ...
- C++产生随机数函数rand()
C++产生随机数函数rand() C++11之前没有random,生成随机数用rand(),可以配合srand()来使用.rand()不是真正的生成随机数,而是线性取余,有可能也会生成相同的数出来.生 ...
- php随机整数rand和mt_rand,PHP随机数函数rand()与mt_rand()的讲解
PHP随机数函数rand()与mt_rand()的讲解 PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:PHP生成指定范围内 ...
- mysql 列 随机数_MySQL的指定范围随机数函数rand()的使用技巧
公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...
- sqlserⅴer随机函数_SQL server的随机数函数rand()详解
SQL server的随机数函数rand()详解 from:http://tieba.baidu.com/f?kz=607363268 在SQL Server中,有个随机函数rand(),有不少新手可 ...
- c mysql生成随机数函数,MySQL的指定范围随机数函数rand()的使用技巧
公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...
- MySQL集函数随机数_MySQL的指定范围随机数函数rand()的使用技巧
公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数 ...
- c语言如何初始化随机数种子,关于随机数函数rand和其种子初始化
原文链接 随机数.随机数种子 在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器. 有关如何产生随机数的理论有 ...
- c++随机数函数rand()
c 语言rand()生成随机数 c语言中rand()函数生成随机数的用法: 详细介绍: (1)使用该函数首先应在开头包含头文件stdlib.h #include<stdlib.h>(C++ ...
最新文章
- iis7下站点日志默认位置
- 数据结构实验之二叉树七:叶子问题
- 完全删除垃圾Q+!!!
- class反编译_IDEA反编译功能小试牛刀
- 前端学习(1770):前端调试之如何参照站点的manifest
- 弱鸡儿长乐爆零旅Day4
- mysql任务调度器_mysql存储过程和任务调度器
- ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
- LSF集群基本概念介绍
- 查询-SPJ练习3参考答案
- iPics2Go: iPhone变身扫描仪
- 两行代码制作你的专属动态二维码
- TensorFlow通过Cholesky矩阵分解实现线性回归
- JAVA毕业设计基层党支部建设平台计算机源码+lw文档+系统+调试部署+数据库
- 计算音频一秒播放多少帧
- 三维仿真引擎软件HLCSim有什么用
- android studio 自定义mk文件
- Salesforce宣布与阿里巴巴达成战略合作 向全国开放CRM平台
- python没有用官方正版会不会有什么影响呢_正版系统有必要买吗
- 怎么用计算机发出弹奏的声音,计算机发出刺耳的声音怎么了?[详细介绍]
热门文章
- easyui-combobox实现placeholder提示效果
- cocos2dx 3.1从零学习(四)——内存管理(错误案例分析)
- Windows下ant环境搭建
- 安装Sublime Text 3插件的方法
- docker--强制删除none的image镜像
- 超赞!聊聊WEB APP、HYBRID APP与NATIVE APP的设计差异
- 2 抽象工厂模式(Abstract Factory)
- 4.CND技术详解---集群服务与负载均衡技术
- jsp标签 meta的解释
- php中file文件操作函数readfile fread fgets fgetc以及不需要加fopen的file_get_contents file_put_contents file()