C++中rand()函数的用法

2023-11-04

C++中rand() 函数的用法

1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。

2、如果你要产生0~99这100个整数中的一个随机整数,可以表达为:int num = rand() % 100; 

     这样,num的值就是一个0~99中的一个随机数了。

3、如果要产生1~100,则是这样:int num = rand() % 100 + 1;  

4、总结来说,可以表示为:int num = rand() % n +a;

     其中的a是起始值,n-1+a是终止值,n是整数的范围。

5、一般性:rand() % (b-a+1)+ a ;    就表示  a~b 之间的一个随机整数。

6、若要产生0~1之间的小数,则可以先取得0~10的整数,然后均除以10即可得到“随机到十分位”的10个随机小数。

     若要得到“随机到百分位”的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依 此类推。

7、通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这样是为了便于程序的调试。

     若要产生每次不同的随机数,则可以使用srand( seed )函数进行产生随机化种子,随着seed的不同,就能够产生        不同的随机数。

8、还可以包含time.h头文件,然后使用srand(time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两        次运行时可以得到不同的随机数序列,同时这要求程序的两次运行的间隔超过1秒。

9、举例如下:

rand(产生随机数)
表头文件: #include<stdlib.h>
定义函数 :int rand(void)

函数说明 :
因为rand() 的内部实现是用线性同余法做的,它不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,
rand() 会返回一随机数值,范围在 0 至 RAND_MAX 间。
在调用此函数产生随机数前,必须先利用 srand()设置好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为 1。
rand()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是 srand()。

返回值:
返回 0 至 RAND_MAX 之间的随机整数值,RAND_MAX 的范围最少是在 32767 之间(int),即双字节(16位数)。
若用unsigned int 双字节是 65535,四字节是 4294967295 的整数范围。
0~RAND_MAX 每个数字被选中的机率是相同的。

范例1:
/* 产生介于 1 到 10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考 srand()*/

#include<stdlib.h>
int main()
{
	int i,j;
	for(i=0; i<10; i++)
	{
		j=1+(int)(10.0 * rand()/(RAND_MAX+1.0));
		printf("%d ",j);
	}
}

执行:
9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6 //再次执行仍然产生相同的随机数

范例2:
/* 产生介于 1 到 10 间的随机数值,此范例与执行结果可与 rand()参照*/

#include<time.h>
#include<stdlib.h>
int main()
{
	int i,j;
	srand((int)time(0));
	for(i=0; i<10; i++)
	{
		j=1+(int)(10.0 * rand()/(RAND_MAX+1.0));
		printf(" %d ",j);
	}
}

执行:与 rand() 范例比较:
5 8 8 8 10 2 10 8 9 9
2 9 7 4 10 3 2 10 8 7 //再次执行仍然产生相同的随机数



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中rand()函数的用法 的相关文章

  • JS组件Bootstrap实现弹出框和提示框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码 对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言 对于Web开发人员 弹出框和提示框的使用肯定不会陌生 比如常见的表格新增和编辑功能 一般常见的主要有两种处理方式 行
  • Python研发工程师必备工具合集

    Python研发工程师必备工具合集 1 必备工具 2 常用网站 3 学习路线 4 必备技能 5 书籍推荐 6 进阶学习 一 必备工具 1 Sublime Text 2 Notepad 3 Visual Studio Code 4 Atom
  • 宝塔环境,后台上传图片不成功问题

    主要是宝塔开启了post攻击拦截导致的 关闭之后就可以了 或者选择性关闭规则 我的项目追踪请求返回内容 div 宝塔免费WAF提醒您 from data 请求异常 拒绝访问 如有误报请点击误报 div
  • 第十章 数据库恢复技术

    第十章 数据库恢复技术 10 1 事务的基本概念 事务 事务是用户定义的一个数据库操作序列 这些操作要么全做 要么全不做 是一个不可分割的工作单位 例 事务的特性 ACID特性 ACID properties 原子性 Atomicity 事
  • Jetbrains相关IDE下载历史版本

    进入 https www jetbrains com zh cn phpstorm download other html 点击相应的IDE 在连接最后添加 字符串 download other html 回车 跳转到当前IDE历史版本下载
  • python3.6 安装torch、torchvision

    python3 6安装torch torchvision 1 进入torch的官网的下载页面 选择一下参数信息 2 下载 whl 文件到本地 直接复制那个地址 3 把刚刚下载的两个文件 放到安装python安装文件夹里面去 比如 我是复制到
  • C语言:详细讲解基于tcp和udp的两种本地通信方式

    udp本地通信注意 客户端这边必须要绑定自己的客户端信息不然服务器就无法给客户端发送消息 原因是网络编程的时候客户端信息操作系统会自动分配 而本地通信并不会 本地通信的时候 服务器的那个套接字文件是用来标识服务器进程的 客户端得用两个套接字
  • 集合的练习题

    练习1 随机点名器 需求 班级里有N个学生 实现随机点名器 public class W1随机点名器 public static void main String args ArrayList
  • OneNav 加强版支持多用户

    修改说明 支持多用户注册使用 Web自助申请 自助修改用户名和密码 可关闭注册 支持注册时记录用户注册IP和时间 支持登陆保护机制 多次登陆失败后会被限制 防止被爆破 支持隐藏登陆注册接口 防止被爆破 支持在非根目录运行 支持js css等
  • 以衍复为例,聊聊当下的沪深300指数增强

    最基础的问题 什么是沪深300指增 沪深300指数增强策略 对标沪深300指数 它利用量化投资的方式进行主动选股 很多管理人已经是全市场选股 在获取 指数 收益的同时 获取超越市场的 收益 能否长期获得稳定的 收益是衡量管理人水平的重要评判
  • [Pytorch系列-64]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix : 有监督图像生成pix2pix的基本原理

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122044727 目录 第1章 关键参
  • Linux/Ubuntu 单机安装配置 zookeeper

    文章目录 下载 配置zookeeper 运行zookeeper 添加zookeeper命令到环境变量 下载 官网下载页面 https archive apache org dist zookeeper 清华源下载地址 https mirro
  • AI智能语音客服机器人方案介绍/优点/核心

    介绍 智能语音电话系统 在语音电话交流中自动理解客户意向 并做出最恰当的回应 智能代替人工的基本原理如下 即在呼入 呼出过程中 利用ASR NLP技术引导用户说出需求 通过真人录制的声音模仿与客户进行多轮对话 将语音转化为文字 根据识别的文
  • 查看数据库数据文件的总大小

    select round sum bytes 1024 1024 1024 0 total space GB from dba data files round 是oracle数据库四舍五入函数 来自 ITPUB博客 链接 http blo
  • 关于js逆向你必须知道的20个知识点

    1 什么是js逆向 js逆向是指通过分析JavaScript代码来了解网页或应用的工作原理 发现关键信息或漏洞的过程 2 为什么要学js逆向 学习js逆向可以帮助我们加深对JavaScript语言的理解 发现网站或应用的漏洞 也可以用于一些
  • 【H5】前端存储 -- cookie、sessionStorage、localStorage

    前端存储分为cookie和webStorage webStorage又分为sessionStorage 会话存储 和localStorage 本地存储 cookie 特点 cookie产生于服务器端 保存在客户端 同一服务器下的cookie
  • 知识图谱的应用领域

    1 3 知识图谱的价值 知识图谱最早的应用是提升搜索引擎的能力 随后 知识图谱在辅助智能问答 自然语言理解 大数据分析 推荐计算 物联网设备互联 可解释性人工智能等多个方面展现出丰富的应用价值 1 辅助搜索 互联网的终极形态是万物的互联 而
  • [VS Code]-代码高亮设置

    代码高亮设置 在vscode 中对 选中的代码片段高亮颜色设置 和 所在当前行高亮提示设置 workbench colorCustomizations 2 写配置代码 workbench colorCustomizations editor

随机推荐

  • ThreadLocal从变量副本的角度解决多线程并发安全问题

    ThreadLocal从变量副本的角度解决多线程并发安全问题 之前我们讲的高并发场景下的线程安全问题 可以使用Synchronized同步关键字 Lock手动加锁的方式去解决 什么轻量级锁 偏向锁 重量级锁 可重入锁等等 实际上本质都是控制
  • Elasticsearch的long类型精准匹配异常?

    ES version 7 5 2 现象 通过其他字段可以查询出elasticsearch的doc数据 但通过某个long类型的字段精准匹配时不能hit GET index name search query term field value
  • 零基础上手定制谷歌浏览器插件

    文章目录 谷歌插件 核心内容简述 谷歌插件小案例 安装自定义谷歌插件 结语 谷歌插件 说起谷歌插件 相信大家应该都不陌生 比如下图就是我所安装的一些谷歌插件 而今天我所要做的不是给大家介绍有哪些好用的谷歌插件 而是给大家介绍一种快速上手自己
  • 懒汉模式的单例中对于指令重排序的规避方案

    1 双重检查的单例模式中可能会出现第一个非空判断为true 可是instance并没有初始化的情况 这种情况如果线程1去访问instance则会报异常 使用volatile关键字去声明instance可以规避2 3步的指令重排序 进而规避这
  • CMake入门指南

    CMake是一个比make更高级的编译配置工具 它可以根据不同平台 不同的编译器 生成相应的Makefile或者vcproj项目 通过编写CMakeLists txt 可以控制生成的Makefile 从而控制编译过程 CMake自动生成的M
  • python做excel自动化-Python如何控制Excel实现自动化办公

    Python如何控制Excel实现自动化办公 发布时间 2020 04 07 09 51 44 来源 亿速云 阅读 132 作者 小新 这篇文章主要给大家讲解的是Python如何控制Excel实现自动化办公 主要用到了xlsxwriter库
  • python画双坐标图_Python绘图分组双坐标柱状图(全网唯一,发布源代码),python,画,公布...

    目前在网络上没有找到现成的办法解决双坐标分组柱状图 为了画这个图 花了3小时 实现效果 源代码如下 import matplotlib pyplot as plt a 4 5 0 b 3 2 0 c 4 3 0 d 3 2 0 a 2 0
  • Hololens2项目基础开发

    目录 一 前言 二 VS2019负载安装 三 Hololens2项目环境配置 四 项目具体功能实现 五 打包部署真机测试 一 前言 Hololens2项目基础开发包含 单 双 手近距离控制物体移动旋转 双手近距离控制物体的缩放 语音功能 控
  • MATLAB中的corrcoef函数求两个向量的相关系数。

    想用MATLAB中的corrcoef函数求两个向量的相关系数 比如A 1 2 3 B 5 3 7 r corrcoef A B 可以求出相关系数是0 5 为什么两个向量的元素都要是3个以上才行 而只有两个元素的向量如A 1 2 B 5 3
  • 计算机网络笔记第二章链路层

    二 链路层和局域网 提供服务 差错检测error detection correction 共享广播信道sharing a broadcast channel 多路访问multiple access 多通信同时进行同一段链路如何使用 链路层
  • PHP之 导入excel表格时,获取日期时间变成浮点数

    读取到的时间 float 0 20833333333333 原格式 15 00 00 代码 if Request isPost file url input upfile 本地上传文件地址 读取文件内容 local file url dir
  • vsftpd下错误之:500 OOPS

    vsftpd下错误之 500 OOPS vsftpd 是在Linux发行版中最推崇的一种FTP服务器程序 vsftpd的特点 小巧轻快 安全易用等 Linux也是为人们所常用的操作系统之一 这里主要讲的是如何解决vsftpd下错误之 500
  • 信捷 XD3 PLC+TG465-XT HMI开箱

    PLC 新到手了一台信捷 XD3 60RT E 这是我摸过的继西门子 三菱之后的第三个牌子 也是第一个国产品牌 打开包装盒的第一个感觉是这台机型简直和停产多年的三菱 FX2N一模一样 就是不清楚它具体是和三菱哪个机型对标的 变化还是有的 用
  • go-zero 基础

    官网 github 开发规范 1 环境准备 1 1 goctl安装 1 2 protoc protoc gen go安装 方式一 goctl env check i f verbose 方式二 源文件安装 2 快速开始 本节主要通过对 ap
  • 误操作清空了回收站文件如何找到文件

    我们在删除文件的时候 文件都是先跑到回收站里的 这样的防止我们出现误删的情况 但往往也会出现我们要恢复删除的文件却误操作清空了回收站的情况 那么误操作清空了回收站如何找到呢 下面小编给大家分享误操作清空了回收站文件找到的方法 误操作清空了回
  • 计算样本方差时为什么除以(n-1)

    方差概念 除以n其实没错 但只适用于母体方差 总体均数已知 同样的 样本标准差也只适用于样本方差 让我们看一下这两个公式 统计学重要的研究内容之一是 用样本推测总体 具体而言 就是用样本均数和样本标准差来估计总体均数和总体标准差 而这里的估
  • 如何利用maven配置mybatis-generator自动生成mapper.xml

    首先配置pom xml文件 新增插件
  • 散点图绘制

    文章目录 1 二维数组的索引 2 npz文件 3 散点图的绘制 在Python数据分析与应用中有一个散点图的例子 做这个例子之前首先要弄清楚两个点 对二维数组进行取数操作 python中的npz文件 1 二维数组的索引 二维数组中的每一个元
  • JS进行sql脚本整理

    JS进行sql脚本整理 在项目增量开发时 会出现开发环境因为集成了新功能或修改了旧功能 导致数据库中数据表字段修改或数据已经更新的情况 这时如果其他环境想要使用新功能 除了更新服务程序外 还需要将开发环境新增的数据整理成sql进行数据同步
  • C++中rand()函数的用法

    C 中rand 函数的用法 1 rand 不需要参数 它会返回一个从0到最大随机数的任意整数 最大随机数的大小通常是固定的一个大整数 2 如果你要产生0 99这100个整数中的一个随机整数 可以表达为 int num rand 100 这样