Random用法及常用方法总结

来源:互联网 发布:mac word转pdf原页面 编辑:程序博客网 时间:2024/05/23 07:25

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
falsefalse
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.0158999598344690130.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
3754
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
376
16
80
39
14
43
27
73
1
59
******************************
28
33
33
20
10
93
29
49
97
37


1 0