Java随机数控制范围

本文探讨了如何使用Java的Random类和Math.random()方法生成50到100之间的随机数。通过分析nextInt(51)和(double)(Math.random()*51+50)的数学原理,解释了如何确保生成的随机数符合指定范围,并强调了利用类型转换的特性来实现目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Random

求50~100的随机数

public class RandomTest {
    public static void main(String[] args) {
        Random ran = new Random();
        for(int i=0;i<100;i++){
            System.out.println(ran.nextInt(51)+50);
        }
    }
}

分析 ran.nextInt(51)+50 的意义

ran.nextInt(51) 是返回一个0~50的数字,而我们要求这个数最低是50,最高是100

  1.         先考虑最坏结果:返回0,那么我们就在结果后面+50,就满足最低返回50
  2.         再考虑最好结果:返回50,我们在此结果上+50,就满足最大100的结果
  3.         最小最大结果考虑到,这就是一个指定范围的随机数

2.Math.random()

求50~100的随机数

public class MathTest {
    public static void main(String[] args) {
        //50~100
        for(int i=0;i<100;i++){
            int re = (int)(Math.random()*51+50);
            if(re == 50){
                System.out.println(re+"------");
            }else{
                System.out.println(re);
            }
        }
    }
}

分析(int)(Math.random()*51+50)的意义

Math.random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。

  1.         考虑最坏结果,Math.random()返回0.0,那么+50就满足了最低50的要求
  2.         考虑最好结果,Math.random()返回0.99,0.99*51=50.49,+50等于100.49,double强转int向下转型,为100,就满足最大结果100
  3.         最小最大结果考虑到,这就是一个指定范围的随机数

特点:

  • 利用double转int类型向下转型的特性

总结:

        首先考虑最坏最好的结果,然后想办法弥补最坏结果的情况下同时也可以匹配最好的结果,

这中间就会出现一个经常在变动的数字,而随机数方法就是这个一直在变动的数字,我们只需要利用好其随机的特性,再利用数学运算弥补下其特性的不足,就可以指定范围的随机数了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾欲乘风归去,又恐琼楼玉宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值