您的位置:首页 > 编程语言 > Java开发

java中Random()详解

2015-11-14 11:54 465 查看
Random(),导入java.util.Random()包。

构造函数分两种,无参时:Random()创建一个新的随机数生成器。

有参时:Random(long seed)单个
long
种子创建一个新的随机数生成器。(关于这个seed的问题,大家只要知道它是一个种子生成源,没有极特别的需求一般我们是用不到的,也不会有影响)

方法摘要
protectedint
next(int bits)


生成下一个伪随机数。
boolean
nextBoolean()


返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的
boolean
值。
void
)]nextBytes(byte[] bytes)


生成随机字节并将其置于用户提供的 byte 数组中。
double
nextDouble()


返回下一个伪随机数,它是取自此随机数生成器序列的、在
0.0
1.0
之间均匀分布的
double
值。
float
nextFloat()


返回下一个伪随机数,它是取自此随机数生成器序列的、在
0.0
1.0
之间均匀分布的
float
值。
double
nextGaussian()


返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的
double
值,其平均值是
0.0
,标准差是
1.0
int
nextInt()


返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的
int
值。
int
nextInt(int n)


返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的
int
值。
long
nextLong()


返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的
long
值。
void
setSeed(long seed)


使用单个
long
种子设置此随机数生成器的种子。
接下来直接上代码,常用的例子和公式都在里面:

import java.util.Random;

public class TestRandom {
public staticvoid main(String[] args){
Random rand = new Random();
/*
* 生成任意[0,n)区间的随机整数,都可以使用如下代码:
*int n2 = r.nextInt(n);
* n2 = Math.abs(r.nextInt() % n);按照数学上的规定余数的绝对值小于除数
*/
System.out.print("[0,5):方法一:");
for(int i=0;i<10;i++){
System.out.print(rand.nextInt(5) + " ");
}
System.out.println();

System.out.print("[0,5):方法二:");
for(int i=0;i<10;i++){
System.out.print(Math.abs(rand.nextInt()*5) + " ");
}
System.out.println();
//生成任意区间整数
System.out.print("[11,19]:");
for(int i=0;i<10;i++){
System.out.print(rand.nextInt(19)%(19-11+1)+11 + " ");
/*[min,max]
* rand.nextInt(max)%(max-min+1)+min
* rand.nextInt(19)产生[0,18]随机数
* %(19-11+1)产生[0,9]的随机数,因为按照数学上的规定余数的绝对值小于除数
* +11产生[11,20]的随机数
*/
}
System.out.println();

System.out.print("[11,18]:");
for(int i=0;i<10;i++){
System.out.print(rand.nextInt(18)%(18-11+1)+11 + " ");
}
System.out.println();

System.out.print("[-3,15):");
for(int i=0;i<10;i++){
System.out.print(rand.nextInt(18)-3 + " ");
}
System.out.println();
/*
* 生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),
* 则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可
*/
System.out.print("[11,19):小数Double:");
for(int i=0;i<10;i++){
System.out.print(rand.nextDouble()*8+11 + " ");
}
System.out.println();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: