JavaScript 数学

Math
Math.min()返回最小值 Math.max()返回最大值

var max=Math.max(1,5,7,8);
console.log(max);  //8
var min=Math.min(1,5,7,8);
console.log(min);  //1

也可以使用apply()方法,这个技巧的关键是把Math对象作为apply()的第一个参数,从而正确的设置this的值。然后可以将任何数组作为第二个参数。

var max=Math.max.apply(Math,[3,6,9,10]);
console.log(max); //10

Math.ceil()向上取整。

console.log(Math.ceil(2.1));  //3
console.log(Math.ceil(2.5));  //3
console.log(Math.ceil(2.8));  //3

Math.floor()向下取整。

console.log(Math.floor(2.1));  //2
console.log(Math.floor(2.5));  //2
console.log(Math.floor(2.8));  //2

Math.round()四舍五入。

console.log(Math.round(2.1));  //2
console.log(Math.round(2.5));  //3
console.log(Math.round(2.8));  //3

随机
random()方法。

console.log(Math.random()*1);  //返回一个0~1的随机数 
console.log(Math.round(Math.random()*1));  //因为random之后的数字都有很多小数所以应搭配取整方法

选择一个介于2到10的随机数。
因为从2~10一共有9个数 所以可能值得总数为9 而第一个可能的值为2

console.log(Math.round(Math.random()*9+2));

生成不重复的随机数:
①生成第i个[min,max]区间的随机数,并与之前i-1个数比较,如有重复,令i=i-1;重复生成第i个随机数。

function a(n, min, max) {
    var arr = [];
    for (i = 0; i < n; i++) {
        arr[i] = parseInt(Math.random() * (max - min + 1) + min);
        for (j = 0; j < i; j++) {
             if (arr[i] == arr[j]) {
                i = i - 1;
                break;
            }
        }
    }
    return arr;
}

②先生成n个[min,max]区间随机数,比较是否重复,如重复则返回,再次执行。

function b(n, min, max) {
    var arr = [];
    for (i = 0; i < n; i++) {
        arr[i] = parseInt(Math.random() * (max - min + 1) + min);
    }
    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (arr[i] == arr[j]) {
               b(n, min, max);
               return fault;
            }
        }
    }
    return arr;
}

③生成[min,max]区间的一个顺序数组,打乱数组,输出前n个值。

function c(n, min, max) {
    var arr = [];
    var arr2 = [];
    for (i = 0; i < max - min + 1; i++) {
        arr[i] = i + min;
    }
    for (var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
    for (i = 0; i < n; i++) {
       arr2[i] = arr[i];
    }
    return arr2;
}

④生成[min,max]区间的一个顺序数组,从中随机选出一个值,然后在数组中删掉这个值,再选第二个随机值。

function d(n, min, max) {
    var arr = [];
    var arr2 = [];
    for (i = 0; i < max - min + 1; i++) {
        arr[i] = i + min;
    }
    for (i = 0; i < n; i++) {
        var x = parseInt(Math.random() * arr.length);
        arr2[i] = arr[x];
        for (j = x; j < arr.length; j++) {
            arr[j] = arr[j + 1];
        }
        arr.length = arr.length - 1;
    }
    return arr2;
}
发布了75 篇原创文章 · 获赞 0 · 访问量 3392

猜你喜欢

转载自blog.csdn.net/E_ISOLATE/article/details/100866192
今日推荐