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)中常用到的函数:
rand函数:用于产生随机数
srand函数:用于初始化随机数种子
system函数:用于DOS系统功能调用
exit函数:用于退出程序
qsort函数:快速排序
itoa、atoi、atof等一系列转换函数
malloc函数:(也可以用头文件malloc.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随机函数的更多相关文章

  1. srand rand 随机函数

    srand函数是随机数发生器的初始化函数.原型:voidsrand(unsigned int seed); srand和rand()配合使用产生伪随机数序列.rand函数在产生随机数前,需要系统提供的 ...

  2. c语言中的一些注意点

    1.头文件两种形式的区别(#include<mystring.h>与#include"mystring.h") 当运行一个程序时,需要调用自己写的函数时,需要在头文件加 ...

  3. SQL反模式学习笔记16 使用随机数排序

    目标:随机排序,使用高效的SQL语句查询获取随机数据样本. 反模式:使用RAND()随机函数 SELECT * FROM Employees AS e ORDER BY RAND() Limit 1 ...

  4. 彻底理解mysql服务器的字符集转换问题

    主要参考这三个文章: https://www.xiariboke.com/article/4147.html http://blog.sina.com.cn/s/blog_690c46500100k1 ...

  5. XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解

    XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...

  6. mysql随机查询符合条件的几条记录

    随机查询,方法可以有很多种.比如,查询出所有记录,然后随机从列表中取n条记录.使用程序便可实现.可是程序实现必须查询出所有符合条件的记录(至少是所有符合条件的记录id),然后再随机取出n个id,查询数 ...

  7. windows下sqli-labs的搭建及学习(GET篇)

    环境搭建: 源码下载地址:https://github.com/Audi-1/sqli-labs 需要搭建以下环境: apache+mysql+php Tomcat+mysql+java(部分关卡需要 ...

  8. 【菜鸟学注入】之MySQL报错注入详解

    本文转自:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=6483&highlight=mysql%2B报错注入 用SQL注入 ...

  9. MYSQL数据库学习----MYSQL函数

    MYSQL函数分为几种 数学函数 字符串函数 日期和时间函数 条件判断函数 系统信息函数 加密函数 格式化函数 一:数学函数 主要使用的几个数学函数 1 ABS()----绝对值函数 eg. SELE ...

随机推荐

  1. jFinal的小知识点总结

    sql批处理 // 批处理sql List<String> sqlList = new ArrayList<String>(); sqlList.add("delet ...

  2. Pytohn笔记(31)----第三方包

    摘自: https://www.jianshu.com/p/bbc8672a2d09 一. from __future__ import **** [版本更新之后想在原来的版本使用新版本的一些功能] ...

  3. Jmeter - 生成Html报告

    同步更新至个人博客:https://njlife.top/2019/07/12/Jmeter-%E7%94%9F%E6%88%90Html%E6%8A%A5%E5%91%8A/ Jmeter GUI提 ...

  4. 大数据之路week07--day04 (Linux 中查看文件内容的关键字处)

    Linux如何对文件内容中的关键字进行查找   如果是用vi打开文件后,在命令行下输入“/关键字” 如果是在没有打开文件的前提就用"cat 文件名 | grep "关键字" ...

  5. Robot Framework--连接Mysql数据库

    1.安装Database-Library 输入命令:pip install robotframework_databaselibrary 2.添加Database的Library 3.实例 *** T ...

  6. 修改 hosts 完成域名绑定

    修改 hosts 完成域名绑定 mac 用户直接执行 vim /private/etc/hosts在 hosts 文件最后添加一行: 127.0.0.1a.com 这一句是什么意思呢? 就是告诉我们的 ...

  7. bzoj3097 hash killer 1——构造题

    题意 在 $u64$ 自然溢出下,请输出一串字符串和 $L$,使得对任意 $Base$ 都能找到两个长度为 $L$ 的字串的 $Hash$ 值相同. 分析 $u64$ 自然溢出等价于两个哈希值模 $2 ...

  8. SQL:自增主键的获取@@IDENTITY 和 SCOPE_IDENTITY 的区别

    @@IDENTITY 返回当前会话所有作用域的最后一个ID SCOPE_IDENTITY() 返回当前作用域的最后一个ID 返回上面语句执行后产生的自增主键,这个是目前最可靠的方式: insert i ...

  9. HTML 006 文本格式化(了解)

    HTML 文本格式化 HTML 文本格式化 加粗文本 斜体文本 电脑自动输出 这是 下标 和 上标 尝试一下 » HTML 格式化标签 HTML 使用标签 <b>("bold&q ...

  10. AcWing P378 骑士放置 题解

    Analysis 这道题跟前几道题差不多,依旧是匈牙利算法求二分图匹配,在连边的时候,要连两个矛盾的位置(即一个骑士和其控制的位置).然后就跑一遍匈牙利算法就好了. #include<iostr ...