java中random()函数用法介绍
创建一个新的随机数生成器。
| 代码如下 | 复制代码 |
| Random(long seed) | |
使用单个 long 种子创建一个新的随机数生成器。
我们可以在构造Random对象的时候指定种子,如:
| 代码如下 | 复制代码 |
|
Random r1 = new Random(20); |
|
或者默认当前系统时间对http://www.111cn.net/jsp/Java/45403.htm 应的相对时间有关的数字作为种子数:
| 代码如下 | 复制代码 |
|
Random r1 = new Random(); |
|
种子数只是随机算法的起源数字,和生成的随机数字的区间无关。
2、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)区间的整数
均匀分布性
| 代码如下 | 复制代码 |
|
import java.util.Random; |
|
java中random()函数用法介绍的更多相关文章
- JAVA中字符串函数subString的用法小结
本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...
- Oracle trunc()函数,decode()函数,substr函数,GREATEST函数,java中substring函数的用法
--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2013- ...
- Java 中 synchronized的用法详解(四种用法)
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- php中opendir函数用法实例
这篇文章主要介绍了php中opendir函数用法,以实例形式详细讲述了opendir函数打开目录的用法及相关的注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例分析了php中opendi ...
- php中setcookie函数用法详解(转)
php中setcookie函数用法详解: php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见. 语法: bool set ...
- 转:十八、java中this的用法
http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...
- java中random的几个方法的使用Math.random()和random().
random java中我们有时候也需要使用使用random来产生随机数,下面我来简单的介绍下java中random的使用方法 第一种:Math.random() public static doub ...
- PHP中 spl_autoload_register() 函数用法
这篇文章主要介绍了PHP中spl_autoload_register()函数用法,结合实例形式分析了__autoload函数及spl_autoload_register函数的相关使用技巧,需要的朋友可 ...
随机推荐
- 在 Windows 中为高级用户配置 IPv6 的指南
在 Windows 中为高级用户配置 IPv6 的指南 适用于: Windows 10, version 1809Windows Server 2019, all versionsWindows Se ...
- Nowcoder contest 370B Rinne Loves Graph 【分层图最短路】
<题目链接> 题目大意: Island 是有一些奇怪的城镇和道路构成的(题目需要,游戏党勿喷),有些城镇之间用双向道路连接起来了,且每条道路有它自己的距离.但是有一些城镇已经被派兵戒严,虽 ...
- Mysql数据库报错:Cannot add or update a child row: a foreign key constraint fails(添加多对多关系)
#创建班级表 class Classes(models.Model): title = models.CharField(max_length=32) n=models.ManyToManyField ...
- mongoose之操作mongoDB数据库
mongoose是node.js操作mongoDB数据库的一种工具,借助于mongoose,我们可以便捷的完成一些数据库的基本操作,基本使用如下: 1.安装 npm install mongoose ...
- SpringBoot应用War包形式部署到外部Tomcat
这一篇文章介绍SpringBoot应用修改默认打jar形式部署为打war包形式,部署到外部Tomcat. SpringBoot应用默认打包成为可执行jar模式让我们感觉到部署的便捷,接下来给大家介绍一 ...
- 解决Intellij IDEA部署JavaWeb项目 404问题
今天朋友问了我一个问题,他的公司项目用idea启动tomcat是成功的, 但是访问页面是404.一般来说,这个问题普遍都是打war包的时候配置有一定的问题导致的. 检查一下Project Struct ...
- Codeforces.666E.Forensic Examination(广义后缀自动机 线段树合并)
题目链接 \(Description\) 给定串\(S\)和\(m\)个串\(T_i\).\(Q\)次询问,每次询问\(l,r,p_l,p_r\),求\(S[p_l\sim p_r]\)在\(T_l\ ...
- 【整理】Java 9新特性总结
距Java 8正式发布三年多时间,Java 9 于2017年9月21日正式发布, 你可能已经听说过 Java 9 的模块系统(讨论的最多的),但是这个新版本还有许多其它的更新. 这里我整理了Java ...
- SpringMVC处理器映射器和方法名称解析器
所谓配置式开发是指,“处理器类是程序员手工定义的,实现了特定接口的类,然后再在SpringMVC配置文件中对该类进行显式的,明确的注册”的开发方式” 1.处理器映射器HandlerMapping Ha ...
- java里的基本数据类型和引用数据类型
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...