直接上代码
function randomFrom(min,max) { var rand=Math.random(); var res=Math.floor( rand * (max - min + 1) + min); return res; } randomFrom(100,1000)//生成100-1000的随机数 randomFrom(10,100)//生成10-100的随机数 randomFrom(28,30)//生成28-30的随机数
我个人的理解(仅供参考):
rand是取出大于等于0,但是小于1的这么一个随机数。
而 rand * (max - min + 1) 是取出 大于等于0,小于(max - min + 1) 这么一个随机数。我们假设:max=10,min=5
带入公式可得 rand * (10- 5+ 1) 则 rand*6 ,这样我们就得到了大于等于0小于6的小数。但是,前面有个floor,就是向下取整,就是大于等于0,小于等于5的整数。
你可以理解成,我要取出他们之间差值的随机数,把这个东西看做一个数轴(由于是向下取整,所以要+1)。
我们假设,刚才rand * (10- 5+ 1) =3 。
这时,我们再把最低值加上去,5+3=8,就得到了我们需要的随机数,也可以形象的理解成,把选区平移到指定位置
具体的画图解析,看这里: 关于 Math.floor(Math.random()* (max - min + 1) + min)的个人理解
微信扫码查看本文
发表评论