一、Math.random()函数
Math.random()函数可以帮我们生成一个一个double类型的值。
Math是java中自带的一个类,有random这样的一个方法。这个方法可以帮我们生成一个浮点数。
public class demo1 {
public static void main(String[] args) {
double value=Math.random();
System.out.println(value);
}
}
通过运行,可以发现,每次运行结果不同。
但是数值的范围是:
0.0000000000000000 ~ 0.9999999999999999
二、生成整数
(1)在上面的学习中,我们可以发现,Math.random()生成的是浮点数。
那如果我们想生成整数呢?
我们知道,Math.random()生成的数值范围为:
0.0000000000000000 ~ 0.9999999999999999
那么,如果乘以10,小数点之前的那个数字(整数部分)的范围就是0~9(0/1/2/3/4/5/6/7/8/9)。
package Test1;
public class demo1 {
public static void main(String[] args) {
//我想输出随机的一个整数
//Math.random():0.0000000000000000~0.9999999999999999
double value=Math.random()*10;
System.out.println(value);
}
}
运行结果(随机的哈,每个人生成的结果不同的):
(2)同理,我们可以思考一下,如果乘以3的话,结果的范围是多少呢?
我们知道,Math.random()生成的数值范围为:
0.0000000000000000 ~ 0.9999999999999999
那么乘以3之后:
0.0*3 ~ 0.9*3(一个无限接近0.9的数乘3,得到一个无限接近3的数)
则:乘以3之后,它的整数部分就是0~2(0/1/2)。
package Test1;
public class demo1 {
public static void main(String[] args) {
//我想输出随机的一个整数
//Math.random():0.0000000000000000~0.9999999999999999
double value=Math.random()*3;
System.out.println(value);
}
}
运行结果(随机的哈,每个人生成的结果不同的):
(3)再同理,我们可以思考一下,如果乘以5的话,结果的范围是多少呢?
经过分析,乘以5之后,它的整数部分就是0~4。(0/1/2/3/4)
(4)只保留整数
我们可以将上面生成的浮点数只保留整数,这样就会生成一个整数啦!
这就需要对生成的浮点数进行强制类型转换了,将浮点数转换为整型(相当于砍掉小数位,只保留整数位)。
假如我们要生成一个随机数,范围是0~25。
①经过上面的分析,我们可以清晰的知道,要让Math.random()乘以26。
②然后将随机生成的小数只保留整数位。
代码如下:
package Test1;
public class demo1 {
public static void main(String[] args) {
//我想输出0~25之间随机的一个整数
//Math.random():0.0000000000000000~0.9999999999999999
int value=(int)(Math.random()*26); //注意用int类型来接收生成的数
System.out.println(value);
}
}
运行结果(随机的哈,每个人生成的结果不同的):
三、进阶练习
我想输出23~59之间随机的一个整数。
:cloud_with_lightning: 思路:
①没有办法从23直接生成,只能从0开始生成。
②我们来数一下23~59之间有多少个数字。59-23=36,一共有37个数字。
③那我们乘以37就可以了,这样的范围就是:0~36
④最后再加上起始值23即可。这样范围就是23~59啦!
⑤注意要用Int类型变量接收哦,还需要强制类型转换别忘了。
代码如下:
package Test1;
public class demo1 {
public static void main(String[] args) {
//我想输出23~59之间随机的一个整数
//Math.random():0.0000000000000000~0.9999999999999999
//59-23=36 一共37个数字
int value=(int)(Math.random()*37)+23;
System.out.println(value);
}
}
运行结果(随机的哈,每个人生成的结果不同的):