Random用法及常用方法总结

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


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值