• JS生成某个范围的随机数(四种情况)


    前言

          JS没有现成的函数,能够直接生成指定范围的随机数。

          但是它有个函数:Math.random()  这个函数可以生成 [0,1) 的一个随机数。

          利用它,我们就可以生成指定范围内的随机数。

          而涉及范围的话,就有个边界值的问题。这样就包含四种情况:

          1)min ≤ r ≤ max  (一般这种比较常见)

          2)min ≤ r < max

          3) min < r ≤ max

          4)min < r < max

    一、min ≤ r ≤ max

    function RandomNumBoth(Min,Max){
                var Range = Max - Min;
                var Rand = Math.random();
                var num = Min + Math.round(Rand * Range); //四舍五入
                return num;
    }

    二、min ≤ r < max

    function RandomNum(Min, Max) {
                var Range = Max - Min;
                var Rand = Math.random();
                var num = Min + Math.floor(Rand * Range);  //舍去
                return num;
    }

    三、min < r ≤ max

    1 function RandomNum(Min, Max) {
    2             var Range = Max - Min;
    3             var Rand = Math.random();
    4             if(Math.round(Rand * Range)==0){             
    5                 return Min + 1;
    6             }
    7             var num = Min + Math.round(Rand * Range);
    8             return num;
    9 }

    四、min < r < max     

     1 function RandomNum(Min, Max) {
     2             var Range = Max - Min;
     3             var Rand = Math.random();
     4             if(Math.round(Rand * Range)==0){
     5                 return Min + 1;
     6             }else if(Math.round(Rand * Max)==Max)
     7             {
     8                 index++;
     9                 return Max - 1;
    10             }else{
    11                 var num = Min + Math.round(Rand * Range) - 1;
    12                 return num;
    13             }
    14  }

    五、对上面的结果进行测试

    JS Bin on jsbin.com

    PS:第三、四的实现方法不是很严谨,虽然测试时生成随机数的概率还算符合结果。求大神赐教!

  • 相关阅读:
    CSP-S2019 退役记
    近期考试反思
    有关近期情况的总结与反思
    我好难啊
    AFO
    智障错误集锦
    关于博客密码【asd
    关于csp-s的各种问题整理
    CSP-S 临别赠言( 二 )
    分层图最短路 乱搞分享
  • 原文地址:https://www.cnblogs.com/lanleiming/p/5409216.html
Copyright © 2020-2023  润新知