关于java中random的一些思考

首先java中存在两个随机数java.util.Random;和Math.random();

首先来看Math.random();它返回的是一个double类型的数值,范围是[0,1)在该范围内几乎均匀分布;返回的是一个伪随机数即有规则的随机;这种方法较为简便易用;想生成何种类型,强制转换即可;相应的做一个简单计算变换一下区间范围即可;例如:生成1~10范围的一个随机整数

int r = (int)Math.random()*10+1;//生成1~10范围的一个随机整数
        System.out.println(r);

 

然后来看java.util.Random;这种方法为用Random类建立对象来进行实体化操作;有两种构造方法:

1.Random r1 = new Random();无参的随机生成器

    for(int i=1;i<=1;i++) {
            int a = r1.nextInt();
            System.out.println(a);
        }

 

该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象即使用系统时间的毫秒作为默认种子。

2.Random r1 = new Random(long seed);有参数的随机生成器,参数类型是long型;也可以叫其为long型种子

    for(int i=1;i<=10;i++) {
            int a = r1.nextInt(10);
            System.out.println(a);
        }

该方法传递了一个long型数值给随机生成器,返回值范围为[0,10);

下面有一种几率实现挺有意思的;在[0,10)区间内有20%的几率实现数字1,50%的几率生成2,其余生成3;那么该如何去实现

呢?

        Random r2 =new Random();
        
        for(int i=0;i<10;i++) {
            int a = r2.nextInt(10);
            if(a<2) {
                a = 1;
            }else if(a<7){
                a = 2;
            }else {
                a = 3;
            }
            System.out.println(a);
        }

 

注意:

Random r1 = new Random(10);
Random r2 = new Random(10);

生成的随机数序列相同

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值