要求解析
在javascript中是有生成随机数的方法的:就是内置对象Math的random()方法,
- 生成数的范围在0-1之间,但是不包含1,故此,能取值到0-0.9999999999999999……,无限接近于1。
- 在生活中,随机数一般都在整数上,所以就对这个方法进行了改进,让他能够取整数,并且在你给定的范围之间。
公式先给出来:Math.floor(Math.random()*(m-n+1)+n)
解析:假设取数值2到6的数;
如果使用random()方法,那么取值在0-0.99999999……,不满足需求。
就进行改进,首先2到6的数,分别是2、3、4、5、6是5个数,而我们会发现生成随机数的个数等于:6-2+1。
然后,用取值的个数去乘以随机数区间的最大值与最小值,其取值范围为【0,4.99999999……5】,你会发现取值范围比我们想要的范围少了2;那么我们在去加上2会是【2,6.9999999……】,最大值又多了0.999999……,为了达到我们的目的,对这个随机数进行向下取整使用floor()方法,即可获得我们想要的这个范围的随机数。
那么对于,2到6的随机数公式应该是Math.floor(Math.Random()*(6-2+1) + 2);
所以,放在函数中,使每一个给出的范围都能够达到这个功能,将2定义为n,6定义为m,故此有公式Math.floor(Math.random()*(m-n+1)+n);
代码
// 生成随机数的方法
function getRandom(n, m){ // 首先创建一个带有参数的函数函数,
var choise = m - n + 1; // 定义随机数的个数
return Math.floor(Math.random()*choise+n);
}
// 调用函数,并打印一组你想取值的数据;
var posRandom = getRandom(2,6);
console.log(posRandom);
运行结果