[JavaScript]内置对象Math初识,以及一些关于随机数的练习

Math 对象不是构造函数,不需要 new 实例化,直接使用。

 

Math.PI
即π,值为3.1415626535......
 
Math.max();
不传入参数时,返回 -Infinity。
传入的参数中有非 Number 类型的变量时,返回 NaN。
传入的参数全为 Number 类型的变量时,返回最大值。
 
Math.min();
不传入参数时,返回 Infinity。
传入的参数中有非 Number 类型的变量时,返回 NaN。
传入的参数全为 Number 类型的变量时,返回最小值。
 
Math.abs();      返回绝对值。
 
Math.floor();       向下取整。
Math.ceil();         向上取整。
Math.round();       四舍五入取整。
 
Math.random();
返回一个 [0, 1) 范围内的数值,注意取不到右端点。
 
 
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
练习1:生成两个数之间的随机数
function rand(min, max) {
    return min + Math.random() * (max - min);
}

 

练习2:生成两个数之间的随机整数(包含这两个整数)
function randomBetween(min, max) {
    min = Math.floor(min);
    max = Math.ceil(max);
    return Math.floor(Math.random() * (max - min + 1) + min);
}
console.log(randomBetween(100, 200));

 

练习3:猜数字。随机生成一个1-100的整数,用户进行猜测输入,返回大了/小了/猜对了!用户只有10次猜的机会。

var result = randomBetween(1, 100);
var chances = 10;
var guess = prompt('有一个1~100的整数,猜猜它是几?\n您有' + chances + '次机会。\n输入0退出。');
while (true) {
    chances--;
    if (guess === '0') {
        alert('谢谢参与。');
        break;
    } else if (guess == result) {
        alert('恭喜猜对了数字!答案是:' + result);

        // 重新开始
        result = randomBetween(1, 100);
        chances = 10;
        guess = prompt('有一个1~100的整数,猜猜它是几?\n您还有' + chances + '次机会。\n输入0退出。');
    } else if (guess != result && chances === 0) {
        alert('很抱歉,次数已用完。\n这个数字应该是' + result);
        break;
    } else if (guess < result && guess > 0) {
        guess = prompt('太小啦,再猜一猜~\n您还有' + chances + '次机会。\n输入0退出。');
    } else if (guess > result && guess <= 100) {
        guess = prompt('太大啦,再猜一猜~\n您还有' + chances + '次机会。\n输入0退出。');
    } else {
        guess = prompt('输入无效,请输入一个1~100的整数。\n您还有' + chances + '次机会。\n输入0退出。');
    }
}

 

练习4:在1~m个数字中,已经抽取出a个随机数,需要不放回地从剩余的数字中抽取b个数。

以下代码对m位两位数的时候适用,并且生成的数字都是两位数的字符串这种

    function getRandom(arr, all_num, need_num) {
        // 生成随机数组
        var randomarr = []
        for (var i = 1; i <= all_num; i++) {
            var n = i < 10 ? '0' + i : n = i + ''
            randomarr.push(n)
        }
        randomarr.sort(function () {
            return 0.5 - Math.random();
        });
        // 对比已有
        for (var i = 0; i < randomarr.length; i++) {
            for (var j = 0; j < arr.length; j++) {
                if (randomarr[i] == arr[j]) {
                    randomarr[i] = 'del'
                }
            }
        }
        // 删除已有
        var newarr = []
        randomarr.forEach(function (r) {
            if (r != 'del') newarr.push(r)
        })
        // 长度
        return newarr.slice(0, need_num)

    }

var arr_old = ['31', '05', '09', '15']
var arr_new = getRandom(arr_old, 34, 8)
console.log(arr_new)

// 最后的格式: arr_new = ['26', '23', '11', '24', '34', '33', '25', '04']

 

posted @ 2021-07-20 08:17  夕苜19  阅读(73)  评论(0编辑  收藏  举报