zoukankan      html  css  js  c++  java
  • 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:第三、四的实现方法不是很严谨,虽然测试时生成随机数的概率还算符合结果。求大神赐教!

  • 相关阅读:
    博客园特效页脚保存
    go channel
    goland 注册
    mac安装go环境
    go 结构体与方法
    gin教程
    hihocoder234周 计算不包含黑点的矩形个数
    参考文献的正确姿势
    vscode用法
    使用extract-text-webpack-plugin提取css文件
  • 原文地址:https://www.cnblogs.com/lanleiming/p/5409216.html
Copyright © 2011-2022 走看看