• JavaScript 获取随机整数


    Math.random()方法会返回介于 0(包含) ~ 1(不包含) 之间的一个随机数

    假如想要拿到0-10之间的数,只需要将该方法的值*10 即Math.random()*10;

    假如想要拿到0-20之间的数,同理,只需要将该方法的值*20  即Math.random()*20;

    那么,想要拿到0-n之间的数,n是整十倍的数,即Math.random()*n。

    想要拿到1-11之间的数呢?就是在0-10的基础上,加上1  即Math.random()*10+1;

    即 想要拿到m-n+m之间的数,n是整十倍的数,即Math.random()*n+m。

    拿到1-10之间的数呢?就是在0-9的基础上,加上1  即Math.random()*9+1;

    即 想要拿到m-n之间的数,即Math.random()*(n-m)+m

    此时,拿到的数值都是小数,而且都是大于m小于n的值。

    舍掉小数点后的数值的方法有很多,如parseInt(),Math.ceil(),Math.floor(),Math.round()

    如果使用parseInt()或Math.floor(),如在0-1之间,永远拿不到1的情况,不满足

    如果使用Math.ceil(),如在0-1之间,除非拿到的值是0,否则都是拿到1的情况,虽然满足,但是概率不平均

    使用Math.round()是最合适的,如在0-1之间,0.5及以上的值会返回1,0.5以下的值返回0。概率平均。

    所以,拿到m-n之间的数,m不等于n,Math.round(Math.random()*(n-m)+m)

    获取不重复的随机整数:(参数:随机数个数,最小值,最大值)

    function randomArr(params) {
      params = { ...{ length: 5, min: 2, max: 32 }, ...params };
      let { length, min, max } = params;
      if (
        typeof length != "number" ||
        typeof min != "number" ||
        typeof max != "number" ||
        max <= min ||
        length <= 0
      ) {
        return [];
      }
      if(max - min < length) {
        length = max - min + 1;
      }
      let arr = [];
      for (let i = 0; i < length; i++) {
        let num = Math.round(Math.random() * (max - min)) + min;
        if (!arr.includes(num)) {
          arr.push(num);
        } else {
          i-=1
        }
      }
      return arr;
    }
    var result0 = randomArr();
    console.log(result0); // [ 7, 15, 18, 16, 4 ]
    var result1 = randomArr({});
    console.log(result1); // [ 17, 24, 27, 25, 8 ]
    var result2 = randomArr({ length: 3 });
    console.log(result2); // [ 24, 4, 27 ]
    var result3 = randomArr({ min: 0 });
    console.log(result3); // [ 21, 11, 8, 18, 13 ]
    var result4 = randomArr({ max: 20 });
    console.log(result4); // [3, 7, 11, 15, 8]
    var result5 = randomArr({ max: 4 });
    console.log(result5); // [3, 4, 2]
  • 相关阅读:
    自己定义Actionbar
    创建自己的Repo Server
    AI案例
    贝叶斯定理,从白袜到飞机失事再到人工智能
    jupyter notebook 安装代码提示功能
    Jupyter notebook 自动补全
    27 个Jupyter Notebook的小提示与技巧
    Windows下的Jupyter Notebook 安装与自定义启动
    以太坊联盟链 parity 节点搭建
    ubuntu上面Parity 安装
  • 原文地址:https://www.cnblogs.com/hiuman/p/11225541.html
Copyright © 2020-2023  润新知