JavaScript产生指定范围内的一个随机数;以及用其解决编程题”函数 fn,该函数有一个参数 n,其返回值是一个数组,是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]“

产生一定范围内的随机数,这是原生JavaScript中没有的函数,所以要自己实现(支持小数范围,但返回是还是整数)

原理:利用内置对象Math的random,floor,ceil方法

random方法:产生一个0~1之间的随机数(不包括1)
floor方法:向下取整
ceil方法:向上取整

ok,下面开始封装为函数
function fn(min,max){
    min = Math.ceil(min);
    max = Math.floor(max);
    // 小的取大,大的取小,之后再+1,并整体向下取整,再于最小作和,就可以了
    let num = Math.floor(Math.random() * (max-min+1)) + min;
    return num;
}
console.log(fn(2,32));
console.log(fn(2.1,5.2));

核心代码:Math.floor(Math.random() * (max-min+1)) + min


编程题:函数 fn,该函数有一个参数 n,其返回值是一个数组,是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]
function fn(n){
    if(typeof(n) != 'number'){
        return 'n应为Number类型';
    }
    if(n<=0){
        return 'n应该大于0';
    }
    let arr = [];
    while(1){
        // 产生一个2~32范围内的随机数:
        let num = Math.floor(Math.random()*(32-2+1)) + 2;
        if(arr.indexOf(num) == -1){
            arr.push(num);
        }
        if(arr.length == n){
            break;
        }
    }
    return arr;
}
console.log(fn('12'));
console.log(fn(0));
console.log(fn(7));

你可能感兴趣的:(JavaScript产生指定范围内的一个随机数;以及用其解决编程题”函数 fn,该函数有一个参数 n,其返回值是一个数组,是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]“)