C++用rand()和srand()生成随机数
内容来自《编程实战宝典》
首先来看函数原型
int rand(void); void srand(unsigned int seed);
1、rand()函数不需要任何参数,直接返回一个随机数,注意,这个随机数是有范围的,在0~RAND_MAX之间,RAND_MAX一般最小取值为32767,其具体值在头文件stdlib.h中进行定义
2、srand需要一个无符号整形数作为参数(种子),如果作为种子的无符号数相同,那么获取的随机数也就相同,注意:srand()必须配合rand()使用才能有效果
下面是用法
#include <iostream>
using namespace std; int main()
{
int i; cout << "测试rand()函数" << endl;
cout << "随机数最大值RAND_MAX为:" << RAND_MAX << endl;
for (i = 0; i < 3;i++)
{
cout << "num = " << rand() << endl;
} cout << "测试srand()函数" << endl;
cout << "使用不同的种子生成随机数" << endl;
for (i = 0; i < 3;i++)
{
srand(i);
cout << "num = " << rand() << endl;
} cout << "使用相同的种子生成随机数" << endl;
for (i = 0; i < 3;i++)
{
srand(2);
cout << "num = " << rand() << endl;
}
}
以下是结果

可以看出,在使用srand()函数时,如果使用相同的种子,那么最终用rand()函数所生成的随机数也相同
特定随机数的生成
为了使rand()函数生成的随机数在一定的范围内,可以使用如下表达式
a + rand() % n
使用上述表达式生成的随机数的范围在a ~ (a + n)之间,其中a为生成的随机数的最小值,a + n - 1为最大值。
例子如下
#include <iostream>
using namespace std;
int main()
{
cout << "生成特定范围内的随机数:" << endl;
cout << "生成5 到 15 之间的随机数" << endl;
for (int i = 0; i < 5;i++)
{
cout << "num = " << 5 + rand() % 10 << endl; //可生成5,6,7,...,14,不包含15
}
}
结果如下

使用系统时间作为种子生成随机数
为了让随机数更像随机数,降低人为因数的干扰,可以使用系统当前时间作为种子产生随机数
#include <iostream>
#include <time.h> //时间函数time()的头文件
#include <windows.h> //暂停函数Sleep()的头文件
using namespace std; int main()
{
cout << "使用系统时间作为种子生成随机数:" << endl;
for (int i = 0; i < 5;i++)
{
Sleep(1000); //暂停一秒,避免因程序执行过快,5次循环中系统时间未发生变化,导致产生的随机数也相同
srand((unsigned)time(NULL));
cout << "num = " << rand() << endl;
}
return 0;
}
结果

也可以使用系统时间作为种子生成特定范围内的随机数
懒得举例了。。
C++用rand()和srand()生成随机数的更多相关文章
- C++ Generate Rand Number Array by "srand()" 生成随机数
在C++中,我们有时想生成一个由随机数组成的数组,而且随机数的范围也可由我们来设定.那么我们就要用到srand()函数配合rand()来使用,参见如下代码: #include <vector&g ...
- 有关rand(),srand()产生随机数学习总结
看到夏雪冬日的有关rand()和srand()产生随机数的总结,挺好的,学习了,然后又有百度其他人的成果,系统总结一下.本文转自夏雪冬日:http://www.cnblogs.com/heyongga ...
- C++中用rand()和srand()产生随机数方法介绍
标准库<cstdlib>(被包含于<iostream>中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void): 从srand (seed)中指定的see ...
- exce生成随机数
有时候数据库没有数据,造数据专用. 来源于:http://jingyan.baidu.com/article/93f9803feba1f5e0e46f55f2.html 首先介绍一下如何用RAND() ...
- C++ 随机数rand()和srand()
标准函数库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h中定义的一个整数,它与系统有关. 例如在我的机器上,RAND_MAX=32767.可以 ...
- (5) openssl speed(测试算法性能)和openssl rand(生成随机数)
1.1 openssl speed 测试加密算法的性能 支持的算法有: openssl speed [md2] [mdc2] [md5] [hmac] [sha1] [rmd160] [idea-cb ...
- sql server 生成随机数 rand函数
https://docs.microsoft.com/en-us/sql/t-sql/functions/rand-transact-sql?view=sql-server-2017 在某一个区间内生 ...
- iOS开发-生成随机数
有时候我们需要在程序中生成随机数,但是在Objective-c中并没有提供相应的函数,好在C中提供了rand().srand().random().arc4random()几个函数.那么怎么使用呢?下 ...
- loadrunner生成随机数
loadrunner生成随机数一: 对网站注册进行压力测试时,需要对注册的用户名进行参数化,因为可以会用到大量的测试数据,所以选择通过生成随机数来进行参数化.最开始用loadrunner自带的参数随机 ...
随机推荐
- 第一篇博客-- 走上IT路
首先介绍一下本人,我是一名在校大学生,在一次学长分享学习经验时了解到,写博客可以帮助复习.所以这就是我要写博客的原因. 我是非常喜欢网络安全技术,因此我选择了我这个专业.在接下来的一段时间我会在这里记 ...
- python暴力破解压缩包密码
啥也不说,直接上代码 #-*-coding:utf-8-*- import zipfile #生成1-999999的数字密码表, 要是有别的密码类型,对密码表改造一下就可以了,也可以上网下载某些类型的 ...
- python封装简介
1.效果图: 对比一: 对比二: 2.学习来源代码: # 封装是面向对象的三大特性之一 # 封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法 # 如何隐藏一个对象中的属性? # - 将对象的属 ...
- [工具] 利用setuptools打包python程序
一.准备工程文件 1.创建工程leeoo 2.在工程根目录下创建setup.py文件 3.在工程根目录下创建同名package 二.编辑setup.py 1.编辑setup.py文件 from set ...
- 矩形内的递推dp
链接:https://www.nowcoder.com/acm/contest/130/B来源:牛客网 黑妹和黑弟又聚在一起玩游戏了,这次他们选择在一个n*m的棋盘上玩游戏,棋盘上的每个方格都有一个非 ...
- Oracle v_$和v$的解释
以v_$mystat和v$mystat具体说明 grant语句中使用的v_$mystat和test用户访问的v$mystat不一样 这里说一下 v$mystat 和 v_$mystat 的区别 初始状 ...
- [LOJ#3022][网络流]「CQOI2017」老 C 的方块
题目传送门 定义有特殊边相邻的格子颜色为黑,否则为白 可以看出,题目给出的限制条件的本质是如果两个小方块所在的格子 \(x\) 和 \(y\) 为两个相邻的黑格,那么 \(x\) 和 \(y\) 之间 ...
- 【模板整理】Tarjan
有向图强连通分量 int tot,low[N],dfn[N],scc[N],sccno; int st[N],top,vis[N]; void tarjan(int u){ int v; low[u] ...
- [洛谷P4585] [FJOI2015] 火星商店问题
Description 火星上的一条商业街里按照商店的编号 \(1\),\(2\) ,-,\(n\) ,依次排列着 \(n\) 个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数 \(va ...
- 《爬虫学习》(四)(使用lxml,bs4库以及正则表达式解析数据)
1.XPath: XPath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 工具:扩展商店里搜索:XPath ...