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

Random用法及常用方法总结

2017-02-23 08:53 423 查看
Random类(java.util)

Random类产生随机数的算法是一种伪随机算法,在进行产生随机数时,随机算法通过起源数字(seed)或叫种子数进行一系列的变换,产生随机数。所以相同种子数在相同次数产生的随机数是相同的。

1 构造方法

(1)public Random()

该构造方法会使用系统当前时间的相关数字作为产生随机数的种子数并利用该种子数产生随机数;

(2)public Random(long seed)

该构造方法允许使用者自定义一个种子数并利用该种子数产生随机数,需要注意的是,种子数与产生随机数的大小或者范围无关;

    示例:

Random random = new Random();
Random randomseed = new Random(1234);

2 常用方法
Random类中的方法生成的随机数是均匀分布的,即区间内所有数字出现的几率相等。

(1)boolean nextBoolean()

该方法用于生成随机的boolean值,即随机生成true或者false;

    示例:

import java.util.Random;

public class Practice08 {
public static void main(String[] args){
Random random = new Random();
Random randomseed = new Random(1234);
for(int i=0;i<10;i++){
System.out.println(random.nextBoolean());
}
System.out.println("******************************");
for(int i=0;i<10;i++){
System.out.println(randomseed.nextBoolean());
}
}
}    运行结果:

第一次运行第二次运行
false

true

false

false

true

true

false

false

false

true

******************************

true

false

true

false

true

false

false

true

false

false
false

true

false

true

false

false

false

false

true

true

******************************

true

false

true

false

true

false

false

true

false

false
可以看出调用Random()方法时,两次运行产生的随机数是随机的,而调用Random(long seed)方法时,两次运行产生的十个随机数分别相等。

(2)double nextDouble()

该方法用于生成随机的double值,范围为[0,1.0),包含0但不包含1.0;

     示例:

import java.util.Random;

public class Practice08 {
public static void main(String[] args){
Random random = new Random();
Random randomseed = new Random(1234);
for(int i=0;i<10;i++){
System.out.println(random.nextDouble());
}
System.out.println("******************************");
for(int i=0;i<10;i++){
System.out.println(randomseed.nextDouble());
}
}
}    运行结果:

第一次运行第二次运行
0.4968216373378379

0.5734949373550408

0.852019908272346

0.20984030302187273

0.494558093099853

0.5825247266138449

0.28886773288711476

0.21403791865578403

0.5555841783678891

0.5108997276326334

******************************

0.6465821602909256

0.9513577109193919

0.8575884598068334

0.45823330506267057

0.3359524025416939

0.20387478195313158

0.34690742873967684

0.617314071997303

0.9468595742485053

0.015899959834469013
0.45977052333535995

0.47629177906094133

0.47446627537727315

0.8193334158480784

0.15775686431494962

0.27063984166744404

0.04724094155787517

0.6572915775899207

0.6461783009794345

0.7266385810244602

******************************

0.6465821602909256

0.9513577109193919

0.8575884598068334

0.45823330506267057

0.3359524025416939

0.20387478195313158

0.34690742873967684

0.617314071997303

0.9468595742485053

0.015899959834469013
可以看出调用Random()方法时,两次运行产生的随机数是随机的,而调用Random(long seed)方法时,两次运行产生的十个随机数分别相等。
(3)int
nextInt()

该方法用于生成随机的int值;

     示例:

import java.util.Random;

public class Practice08 {
public static void main(String[] args){
Random random = new Random();
Random randomseed = new Random(1234);
for(int i=0;i<10;i++){
System.out.println(random.nextInt());
}
System.out.println("******************************");
for(int i=0;i<10;i++){
System.out.println(randomseed.nextInt());
}
}
}

    运行结果:

第一次运行第二次运行
2007915930

-822650973

-1946162266

-1747680144

1250932849

1518101712

1448991956

1020489311

-35838754

2064277798

******************************

-1517918040

1115789266

-208917030

1019800440

-611652875

1362132786

1968097058

-1933932397

1442904595

397902075
-1309824681

-106227231

-1832307327

1208237010

-696335126

1855533443

-1890017889

119486610

-1620495240

1199312626

******************************

-1517918040

1115789266

-208917030

1019800440

-611652875

1362132786

1968097058

-1933932397

1442904595

397902075
可以看出调用Random()方法时,两次运行产生的随机数是随机的,而调用Random(long seed)方法时,两次运行产生的十个随机数分别相等。

(4)int nextInt(int bound)

该方法用于生成随机的int值,范围为[0,bound);

     示例:

import java.util.Random;

public class Practice08 {
public static void main(String[] args){
Random random = new Random();
Random randomseed = new Random(1234);
for(int i=0;i<10;i++){
System.out.println(random.nextInt(100));
}
System.out.println("******************************");
for(int i=0;i<10;i++){
System.out.println(randomseed.nextInt(100));
}
}
}


    运行结果:

第一次运行第二次运行
71

82

88

39

39

60

59

6

8

14

******************************

28

33

33

20

10

93

29

49

97

37
54

91

91

96

55

36

99

7

85

33

******************************

28

33

33

20

10

93

29

49

97

37
可以看出调用Random()方法时,两次运行产生的随机数是随机的,而调用Random(long seed)方法时,两次运行产生的十个随机数分别相等。

(5)void setSeed(long seed)

该方法用于给没有设置种子数的对象设置种子数;

    示例:

import java.util.Random;

public class Practice08 {
public static void main(String[] args){
Random random = new Random();
for(int i=0;i<10;i++){
System.out.println(random.nextInt(100));
}
System.out.println("******************************");
random.setSeed(1234);
for(int i=0;i<10;i++){
System.out.println(random.nextInt(100));
}
}
}

    运行结果:

第一次运行第二次运行
24

63

87

68

31

77

34

90

23

36

******************************

28

33

33

20

10

93

29

49

97

37
6

16

80

39

14

43

27

73

1

59

******************************

28

33

33

20

10

93

29

49

97

37
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  random java