当前位置: 首页 > news >正文

C++生成-1到1的随机数

目录

  • 一、方法一
    • 1、主要函数
    • 2、示例代码
  • 二、方法二
    • 1、方法概述
    • 2、参考文献
    • 3、示例代码
  • 三、方法三
    • 1、参考链接
    • 2、示例代码

在这里插入图片描述
本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。

一、方法一

1、主要函数

   rand()函数是C++标准库中的一个伪随机数生成器,它返回一个在0到RAND_MAX之间的整数,其中RAND_MAX是一个常量,通常定义为32767。由于rand()函数生成的随机数序列是固定的,因此在使用rand()函数之前,通常需要调用srand()函数初始化随机数种子。
srand()函数接受一个无符号整数作为参数,用于初始化随机数种子。通常可以使用当前时间作为随机数种子,如下所示:

#include <cstdlib>
#include <ctime>int main() {srand(time(NULL)); // 使用当前时间作为随机数种子int x = rand(); // 生成一个随机数return 0;
}

  上面的代码中,srand(time(NULL))调用了srand()函数初始化随机数种子。time(NULL)返回当前时间,因此每次运行程序时,随机数种子都不同。这样就可以生成不同的随机数序列。
  如果要生成一个指定范围内的随机整数,可以使用取模运算符(%)将rand()函数的返回值对范围大小取模。例如,要生成一个0到99之间的随机整数,可以这样写:

int x = rand() % 100;

  上面的代码中,rand() % 100调用了rand()函数生成一个随机整数,并对100取模,得到一个0到99之间的随机整数。
  如果要生成一个指定范围内的随机浮点数,可以这样写:

double x = (double)rand() / RAND_MAX * (max - min) + min;

  其中,minmax分别表示随机数的最小值和最大值。上面的代码中,(double)rand() / RAND_MAX * (max - min) + min调用了rand()函数生成一个随机整数,并将其转换为浮点数。然后除以RAND_MAX得到一个0到1之间的随机浮点数。最后乘以(max - min)并加上min得到一个在指定范围内的随机浮点数。

2、示例代码

std::nth_element()

二、方法二

1、方法概述

  由于测量误差可以是正的,也可以是负的,为了使构造的测量误差更符合于实际,则必须在(-1,1)之间产生一组随机数。为此,把产生的(0,1)之间的随机数先扩大10倍或100倍,然后取整得到正整数z,把z值作为-1的指数,再与产生的(0,1)间的随机数相乘,这样就可以通过计算机得到(-1,1)之间的均匀分布的随机数值,再用产生的随机数乘上一个可能出现误差的限值,就构成了测点上可能出现的测量误差值来。

2、参考文献

[1]成枢. 地面沉降变形预计模型与监测技术研究[D].山东科技大学,2005.

3、示例代码

#include <iostream>
#include <ctime>using namespace std;int main()
{int a = 0, b = 2;//区间(a,b]srand((unsigned int)time(NULL));       // 随机数种子,保证每次运行产生不同的随机数序列for (int i = 0; i < 10; ++i){float r01 = rand() / float(RAND_MAX); // 生成0~1的随机数int z = r01 * 100;float d = pow(-1, z) * r01;cout << d << endl;}return 0;
}

三、方法三

1、参考链接

C++:生成-1到1之间的随机浮点数

2、示例代码

#include <iostream>
#include <ctime>using namespace std;int main()
{int a = 0, b = 2;//区间(a,b]srand((unsigned int)time(NULL));//随机数种子,保证每次运行产生不同的随机数序列for (int i = 0; i < 5; i++){int t;		//随机整数1、2,用于控制随机浮点数的正负float d;	//[-1,1]间的随机数t = rand() % (b - a) + a + 1;			d = pow(-1, t)*rand() / float(RAND_MAX);	//生成[-1,1]之间的随机浮点数cout << d;cout << endl;}return 0;
}
http://www.lryc.cn/news/167751.html

相关文章:

  • React-Hooks 和 React-Redux
  • 虚拟机下载与Ubuntu安装
  • 【小数点】C#使用Math.Round方法保留指定小数点位数,并且整数也同样保持统一的2位
  • Android多种方法获取系统属性
  • 密码学【一】
  • 企业如何选择舆情优化处置公司?
  • HBASE知识点
  • Python新手入门
  • vite + react + typescript + uni-app + node 开发一个生态系统
  • python pdf文件转图片
  • 牛客: BM7 链表中环的入口结点
  • SpringMVC系列(七)之自定义注解
  • MongoDB的搭建 和crud操作
  • 软件设计师考试学习1
  • 【云计算】虚拟私有云 VPC
  • @EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行
  • 数据结构入门 — 树的概念与结构
  • linux驱动开发day6--(epoll实现IO多路复用、信号驱动IO、设备树以及节点和属性解析相关API使用)
  • 9月15日作业
  • 关于Java多线程的那些事
  • 信息化项目验收的依据、内容和验收测评报告
  • 解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性
  • Python--文件和异常
  • IDEFICS 简介: 最先进视觉语言模型的开源复现
  • 玩转Mysql系列 - 第20篇:异常捕获及处理详解
  • 一些工具类
  • 20230916后台面经整理
  • 如何通过快解析测试接口内外网?本地内网ip让外网访问连接
  • 用c++实现五子棋小游戏
  • Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)