问题:获取4位随机的数字验证码,数字范围为[1000,10000)
解决:使用java语言的Math类中的random()函数
String code =
(int) (Math.random() * 9000 + 1000) + "";//强制类型转换为整数,因为random函数返回double
思路:[0,1)------>[0,9000)------->[1000,10000)
升华:类比于数轴如何将[0,1)移动到[1000,10000)的位置?
答:
步骤1:将[0,1)的数轴跨度变为指定的跨度;
此处的跨度为10000-1000=9000,则Math.random() * 9000------>[0,9000)
步骤2:在数轴上左右移动到指定位置;
0到1000,需要将刚才的9000跨度的区间范围,沿数轴向右平移1000个单位即可。
一般化:
问题:获得范围 (m,n) 或 [m,n] 或 [m,n) 或 (m,n]的随机整数,且m < n。
解决:
步骤1:首先将取值范围转换为左闭右开的方式,如[m,n)
(m,n)
<=> [m+1,n) eg:(500,750)
<=> [501,750)
[m,n]
<=> [m,n+1) eg:
[500,750]
<=> [500,751)
[m,n)
<=>
[m,n) 不变
(m,n] <=> [m+1,n+1) eg: (500,750] <=> [501,751)
步骤2:
使用Math.random()函数,获得[m,n)之间的随机整数
code = Math.random() * (n - m) + m;