今天工作的时候,项目有遇到一个需求,就是要随机一个-10到10之间的一个随机数,网上查了下,没有达到我的效果,我想要的是:比如 -10-10, 1-10这样子的,可以负数的那种,所以就自己动手撸了一个。
各种随机方式:
n 代表最小 m 代表最大 r表示随机的数值
- n < r >= m; 包含最大的数
- n <= r > m 包含最小的数
- n <= r >= m 两边都包含
- n < r > m 两边都不包含
/**
* [random 各种随机数合集]
* @param {[number]} lowest [最小的值]
* @param {[number]} highest [最大的值]
* @param {[type]} type [默认:两边包含 1:不包含最低 2:不包含最高 3:两边都包含]
* @return {[number]} [返回一个随机数值]
*/
function random(lowest, highest, type) {
var num = Math.random();
if (lowest<0) {
multiplicand = highest + Math.abs(lowest);
}else{
multiplicand = lowest + highest;
}
if (type == 1) {
multiplicand -= 2;
val = Math.ceil(highest - num * multiplicand);
}else if(type == 2){
multiplicand -= 2;
val = Math.floor(highest - num * multiplicand);
}else if(type == 3){
multiplicand -= 2;
val = Math.floor(highest - num * multiplicand);
if (val<0 || val == lowest) val += 1;
}else{
multiplicand -= 1;
val = Math.ceil(highest - num * multiplicand);
}
if (val<0 && highest>0) val -= 2
return val;
}
random(1, 10);
random(1, 10, 1);
random(1, 10, 2);
random(1, 10, 3);
以上就是我写的一个随机数的方法,如果有问题,可以在下方留言,谢谢。