补充:Math.random()方法中的大于等于0.0

while(true){
int a = (int)((Math.random()+1)*30);
System.out.println(a);
}
代码应该没有问题吧
如果取得到0,那肯定有30,但是结果就是没有


补充:

看到回答才发现忘写个向上取整

while(true){
int a = (int)Math.ceil((Math.random()+1)*30);
System.out.println(a);
}
这个代码我取不到30
意味着random取不到0.0?

(int)((Math.random()+1)*30);
相当于包含0到不包含1结果加上1再乘30,最后再转为int,理论上就是包含30至59,直接当等于30的时候停止循环就能看出来了

public static void main(String[] args) throws InterruptedException {
        while(true){
            int a = (int)((Math.random()+1)*30);
            System.out.println(a);
             if(a==30) break;
            }
         
    }

生成30-59

img