rand随机函数
1、rand()
rand()函数是使用线性同余法做的,它并不是真的随机数,因为其周期特别长,所以在一定范围内可以看成随机的。
rand()函数不需要参数,它将会返回0到RAND_MAX之间的任意的整数。[0, RAND_MAX],(0 and RAND_MAX included)。
如果我们想要生成一个在区间[0, 1]之内的数,那么我们可以写出如下代码:
rand_num = rand()/RAND_MAX;
|
c++中rand()函数生成的范围:0~RAND_MAX RAND_MAX是C中stdlib.h中宏定义的一个字符常量 centos7下面(GNU C++也是),他定义的是 /* The largest number rand will return (same as INT_MAX). */ #define RAND_MAX 2147483647 在vs2012下面(32767),他是: #define RAND_MAX 0x7fff |
rand函数产生一个0到RAND_MAX的伪随机数,这里的RAND_MAX因不同的实现而异,但RAND_MAX至少为32767。
有些时候,用户需要获取一定更小范围中的一随机数,如得到一组100以内的随机数,就可以采用rand()%100这种方法,使得结果在100以内。
%是模运算,表示整除 右操作数 取余数
如果想得到【1,100】之间的随机数,则需要对上面的加法进行加工,写成:
(rand()%100)+1; //先得到0-99的随机数,然后加1,可得1-100区间内的数
可见,由要生成的随机范围N,进行缩放rand()%N和偏移+a。
2、srand()
srand(time(0));
仅rand();生成的是伪随机数,多次运行结果不变。
srand()为初始化随机数发生器,用于设置rand()产生随机数时的种子。传入的参数seed为unsigned int类型,通常我们会使用time(0)或time(NULL)的返回值作为seed。
不调用srand(),将默认为srand(1)。
引入变化的种子:使用time(NULL)或time(0)来表示变化的种子,time(0)的返回的是从1970 UTC Jan 1 00:00到当前时刻的秒数,为unsigned int类型。
time函数原型在<ctime>头文件中。
在不同时刻运行程序时,就会有不同的随机数种子,因此就可以得到不同的结果。引入sleep(1.0)。
3、使用
#include<cstdlib>
|
cstdlib(即:stdlib.h)中常用到的函数: #define EXIT_SUCCESS 0 return EXIT_SUCCESS; |
using std::rand;
using std::srand;
srand(seed);//seed每次要变
num=(1+rand()%6);//1-6随机数
【转载自】
关于rand()和srand() - 微念的博客 - CSDN博客 https://blog.csdn.net/u013745804/article/details/82379266
std::rand - cppreference.com https://en.cppreference.com/w/cpp/numeric/random/rand
rand随机函数的更多相关文章
- srand rand 随机函数
srand函数是随机数发生器的初始化函数.原型:voidsrand(unsigned int seed); srand和rand()配合使用产生伪随机数序列.rand函数在产生随机数前,需要系统提供的 ...
- c语言中的一些注意点
1.头文件两种形式的区别(#include<mystring.h>与#include"mystring.h") 当运行一个程序时,需要调用自己写的函数时,需要在头文件加 ...
- SQL反模式学习笔记16 使用随机数排序
目标:随机排序,使用高效的SQL语句查询获取随机数据样本. 反模式:使用RAND()随机函数 SELECT * FROM Employees AS e ORDER BY RAND() Limit 1 ...
- 彻底理解mysql服务器的字符集转换问题
主要参考这三个文章: https://www.xiariboke.com/article/4147.html http://blog.sina.com.cn/s/blog_690c46500100k1 ...
- XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解
XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...
- mysql随机查询符合条件的几条记录
随机查询,方法可以有很多种.比如,查询出所有记录,然后随机从列表中取n条记录.使用程序便可实现.可是程序实现必须查询出所有符合条件的记录(至少是所有符合条件的记录id),然后再随机取出n个id,查询数 ...
- windows下sqli-labs的搭建及学习(GET篇)
环境搭建: 源码下载地址:https://github.com/Audi-1/sqli-labs 需要搭建以下环境: apache+mysql+php Tomcat+mysql+java(部分关卡需要 ...
- 【菜鸟学注入】之MySQL报错注入详解
本文转自:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=6483&highlight=mysql%2B报错注入 用SQL注入 ...
- MYSQL数据库学习----MYSQL函数
MYSQL函数分为几种 数学函数 字符串函数 日期和时间函数 条件判断函数 系统信息函数 加密函数 格式化函数 一:数学函数 主要使用的几个数学函数 1 ABS()----绝对值函数 eg. SELE ...
随机推荐
- HTML&CSS基础-ps的基本操作
HTML&CSS基础-ps的基本操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们工作中可能会经常需要将一个图片做成一个网页,而图片中的字体大小,行间距,图中lo ...
- RedisTemplate的key默认序列化器问题
原文:https://blog.csdn.net/skymouse2002/article/details/80736577 redis的客户端换成了spring-boot-starter-data- ...
- selenium xpath定位方式整理
#xpath定位元素方法: /html/body/div[2] #绝对路径定位 #相对路径定位元素 //* #找到所有的元素 //input #找到input元素 //*[@*] #表示有属性的所有元 ...
- linux网络编程之system v消息队列(二)
今天继续学习system v消息队列,主要是学习两个函数的使用,开始进入正题: 下面则开始用代码来使用一下该发送函数: 在运行之前,先查看一下1234消息队列是否已经创建: 用上次编写的查看消息队列状 ...
- 【搜索-剪枝-偏难】PAT-天梯赛-L3-015. 球队“食物链”
L3-015. 球队“食物链” 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突发奇想,希望从 ...
- java中的switch
switch 语句由一个控制表达式和多个case标签组成. switch 控制表达式支持的类型有byte.short.char.int.enum(Java 5).String(Java 7). swi ...
- Vue 之 slot(插槽)
前言: vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项在使用频率.使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧 ...
- location对象方法(assign()、reload()、replace())
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Mac 升级 Python2.7 到 Python3.5
1.去 Python 官网下载一个版本的包 https://www.python.org/downloads/mac-osx/ 2.安装之后,去 /Library/Frameworks/Python ...
- 从设计稿到实现React应用(分类数据处理)
1. 确定设计稿和数据 设计稿: 数据: [ {category: "Sporting Goods", price: "$49.99", stocked: tr ...