js函数系列之数组:(1)生成不重复的随机数组

js函数系列之数组:(1)生成不重复的随机数组


  • 需求:编写一个 javascript 函数 rndFn,该函数有一个参数n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[1,20]。

  • 思路:这个函数需要传入3个参数:

    1. 范围参数,min、max,随机数个数,n;
    2. 功能要求:随机数,即一个随机数函数;
    3. 功能要求:不重复,即一个校验函数;
  • 示例代码

function rndfn(min,max,n){
    // 将整数取值范围作为变量提取出来
    var min = min,
        max = max;

    // 健壮性:参数校验

    // 准备一个容器
    var arr = [];
    // 循环
    for(var i = 0 ; i < n ; i++){
        // 创建一个随机数
        var rnd = GetRandomNum(min,max);
        // 检查是否重复
        if(checkInArr(arr, rnd)){
            i--;
        }else{
            arr.push(rnd);
        }
    }
    return arr;
}

// 获取某个范围的随机数
function GetRandomNum(Min, Max) {
    var Range = Max - Min;
    var Rand = Math.random();
    return (Min + Math.round(Rand * Range));
}
// 检查数组内是否重复
function checkInArr(arr,rnd){
    // if(var rnd in arr){
    //     return true;
    // }else {
    //     return false;
    // }
    for(var i = 0; i < arr.length; i++){
        if(rnd === arr[i]){
            return true;
        }
    }
    return false;
}
// 调用函数
rndFn(1,10,3);
  • 优化:

    1. 添加健壮性校验
if(!isThere(n)) return [];
if(!typeOK(n) && !is0KStr(n)) return [];
if(!rangeOK(n, min, max)) return [];
  • 其他思路
    1. 校验函数
可以使用indexOf()方法

补充:本文借鉴了网上的文章,个人进行了一些整理和思考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值