搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
神奇cpp
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
CentOS7 安装 git 命令
2
【剑指offer-C++】JZ77:按之字形顺序打印二叉树_按之字型顺序打印二叉树
3
力扣第十题——正则表达式匹配(动态规划化的运用)(附思路讲解、完整代码及知识点精炼)
4
数学建模常用模型简介&其他模型大全汇总_数学建模30种经典模型
5
国内注册使用HeygenAI教程_heygen国内怎么使用
6
学校计算机安全隐患排查情况报告,学校安全隐患排查情况报告
7
AttributeError: ‘NoneType‘ object has no attribute ‘replace‘_attributeerror: 'nonetype' object has no attribute
8
【项目记录】OpenMVPCA舵机控制排名193万+纪念_the value should be measured
9
YOLOv5源码中的参数超详细解析(3)— 训练部分(train.py)| 模型训练调参_yolov5源码逐行超详细注释与解读(3)——训练部分train.py
10
AI界的“视频滤镜”(Stable Diffusion进阶篇-TemporalKit视频风格转化),手把手教你制作原创AI视频_temporal kit下载
当前位置:
article
> 正文
Random 对象、Math.random(转)
作者:神奇cpp | 2024-07-16 12:16:57
赞
踩
math.random();random对象
Random类 (java.util)
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。
下面介绍一下Random类的使用,以及如何生成指定区间的随机数组以及实现程序中要求的几率。
1、Random对象的生成
Random类包含两个构造方法,下面依次进行介绍:
a、public Random()
该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。
b、public Random(long seed)
该构造方法可以通过制定一个种子数进行创建。
示例代码:
Random r = new Random();
Random r1 = new Random(10);
再次强调:种子数只是随机算法的起源数字,和生成的随机数字的区间无关。
2、Random类中的常用方法
Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。下面对这些方法做一下基本的介绍:
a、public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
b、public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。
c、public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。
如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
d、public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
e、public void setSeed(long seed)
该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。
3、Random类使用示例
使用Random类,一般是生成指定区间的随机数字,下面就一一介绍如何生成对应区间的随机数字。以下生成随机数的代码均使用以下Random对象r进行生成:
Random r = new Random();
a、生成[0,1.0)区间的小数
double d1 = r.nextDouble();
直接使用nextDouble方法获得。
b、生成[0,5.0)区间的小数
double d2 = r.nextDouble() * 5;
因为nextDouble方法生成的数字区间是[0,1.0),将该区间扩大5倍即是要求的区间。
同理,生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
c、生成[1,2.5)区间的小数
double d3 = r.nextDouble() * 1.5 + 1;
生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。
同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。
d、生成任意整数
int n1 = r.nextInt();
直接使用nextInt方法即可。
e、生成[0,10)区间的整数
int n2 = r.nextInt(10);
n2 = Math.abs(r.nextInt() % 10);
以上两行代码均可生成[0,10)区间的整数。
第一种实现使用Random类中的nextInt(int n)方法直接实现。
第二种实现中,首先调用nextInt()方法生成一个任意的int数字,该数字和10取余以后生成的数字区间为(-10,10),然后再对该区间求绝对值,则得到的区间就是[0,10)了。
同理,生成任意[0,n)区间的随机整数,都可以使用如下代码:
int n2 = r.nextInt(n);
n2 = Math.abs(r.nextInt() % n);
f、生成[0,10]区间的整数
int n3 = r.nextInt(11);
n3 = Math.abs(r.nextInt() % 11);
相对于整数区间,[0,10]区间和[0,11)区间等价,所以即生成[0,11)区间的整数。
g、生成[-3,15)区间的整数
int n4 = r.nextInt(18) - 3;
n4 = Math.abs(r.nextInt() % 18) - 3;
生成非从0开始区间的随机整数,可以参看上面非从0开始的小数区间实现原理的说明。
Math.random()方法生成0.0至1.0(不包含1.0)的double型随机数,一般地, a + Math.random() * b可以返回a到a+b之间的随机数,不包括a+b.
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/神奇cpp/article/detail/834058
推荐阅读
article
正
菱台
体积
在线
计算
机,
正
多
棱台
体积
,表
面积
,棱长,
斜高
,底
面积
,质量在线
计算
器_三贝
计算
网_23be...
输入
正
多
棱台
的下底边长a、上底边长b、底面边数N、台高h或
斜高
H或棱长c、已知条件、圆周率的精度、密度(选填),点击“计...
赞
踩
article
修改
Element
UI 中
table
表格
鼠标经过某一行的
背景色
_
element
表格
鼠标划上背景...
粘贴以下代码,background-color换成你要的颜色即可。/*
表格
行鼠标经过颜色 */_
element
表格
鼠标...
赞
踩
article
继续预
训练
BERT
实战(
pytorch
版)_
chinese
-
roberta
-wwm-
ext
.rar...
这里写自定义目录标题如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPant...
赞
踩
article
SSM
项目
转
springboot
整合
jsp
_
jsp
页面ssm
项目
转
springboot
...
目录1.添加
springboot
相关pom依赖2.Springboot
整合
jsp
2.1.使用打jar包方式执行2.2.打...
赞
踩
article
docker
file
更改
docker
镜像
源
(
1
)_
docker
file
指定
镜像
源
...
现在能在网上找到很多很多的学习资
源
,有免费的也有收费的,当我拿到
1
套比较全的学习资
源
之前,我并没着急去看第
1
节,我而是去...
赞
踩
article
程序员
职业
晋升
规划
,
按照
这
规划
,
我年薪达到43W, 哇呜_
程序员
职业
成长
飞轮...
程序员
的三个发展分支:1. 技术资深技术工程师
,
对于技术比较痴迷
,
有
这
方面的钻劲。以后可以去做技术顾问
,
可能一周只去公司...
赞
踩
article
【Qt】Qt
Style
Sheets (
QSS
) 指南:打造个性化
用户界面
_qss
--
qt s...
在现代软件开发中,
用户界面
的美观性和交互性是至关重要的。Qt
Style
Sheets(
QSS
)作为一种强大的样式定制工...
赞
踩
article
sip
是什么?
Mac
电脑如何
关闭
sip
?
关闭
系统完整性保护
SIP
的方法教程...
SIP
全称为「System Integrity Protection」即「系统完整性保护」,是 OS X El Cap...
赞
踩
article
50
个你现在应该去
使用
的
最新
的
出色
的
jQuery
插件
_
pickadate
.
js
只选择年月...
jQuery
有一个非常好
的
网络社区环境,贡献了很多创造性
的
jQuery
插件
,但是正因为
插件
太多了,所以使得很多
插件
都很难...
赞
踩
article
【
论文
解读】一文看懂
yolov4
| 各种框架
源码
实现 | 详尽的
state
-
of
-
art
_yolo...
目录1.前言1.1 历史渊源1.2
论文
梗概1.3 效果说明2.Object detection models综述3.s...
赞
踩
article
如何提高
PR
值
...
Google大受青睐的另一个原因就是它的网站索引速度。向Google提交你的网站直到为Google收录,一般只需两个星期...
赞
踩
article
Python
办公自动化
学习笔记(三)—
Python
与
数据分析
_
pandas
自动识别
家庭地址列...
一、利用Pandas进行租房数据统计分析二、 利用Pandas处理全量数据三、利用Openpyxl处理Excel与 利用...
赞
踩
article
基于SSM的
社区
物业
管理
系统
设计与实现_基于ssm的老旧
社区
物业
服务与
管理
系统
...
使用旧方法对
社区
物业
信息进行
系统
化管理已经不再让人们信赖了,把现在的网络信息技术运用在
社区
物业
信息的管理上面可以解决许多...
赞
踩
article
大
数据
:
hive4
:查询...
创建部门表create table if not exists dept(deptno int,dname string...
赞
踩
article
美团/饿了么
外卖
CPS
联盟返利公众号小
程序
核心
源码
_
外卖
cps
源码
...
美团/饿了么
外卖
CPS
联盟返利公众号小
程序
裂变核心
源码
源代码地址https://gitee.com/caonima008...
赞
踩
article
【
2024
版】
最新
AI
大
模型
入门
基础
教程
(非常详细)
,
AI
大
模型
入门到精通
,
收藏这一篇就够了!_
大
模...
AI
大
模型
是指使用
大
规模数据和强
大
的计算能力训练出来的人工智能
模型
。这些
模型
通常具有高度的准确性和泛化能力
,
可以应用于各...
赞
踩
article
定个
目标
_
技术
成长
目标
四条...
从今天起,给自己在
技术
层面上定个
目标
,有朝一日可以成为阿里的P7
_
技术
成长
目标
四条
技术
成长
目标
四条 ...
赞
踩
article
【CS.SE】从
源码
到实践:探索日常对话
的
生成
性
语音
模型
ChatTTS
_
chattts
代码
分析
源...
ChatTTS
:
ChatTTS
是一个用于日常对话
的
生成
性
语音
模型
。- GitCode
ChatTTS
是由开发者 2no...
赞
踩
article
SAP
Change
Request
Management (
ChaRM
)基础教程...
本文介绍了
SAP
Solution Manager中的变更请求管理工具(
Change
Request
Managemen...
赞
踩
article
Docker
(三)
docker
file
命令
说明(图文)
_
docker
执行
docker
file...
docker
file
命令
说明
_
docker
执行
docker
file
docker
执行
docker
file ...
赞
踩
相关标签
正菱台体积在线计算机
ui
vue.js
javascript
pytorch
java
spring boot
spring
python
学习
面试
职场和发展
scrum
程序人生
qt
开发语言
经验分享
神经网络
计算机视觉
yolov4
机器学习
google
yahoo
算法