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

  • 相关阅读:
    .NET面试题系列(五)数据结构(Array、List、Queue、Stack)及线程安全问题
    一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架
    UML类图学习
    服务器防攻击手段
    .NET面试题系列(四)计算机硬件知识
    .NET面试题系列(三)排序算法
    ASP.NET MVC学习(五)之MVC原理解析
    socketWriter.go
    multiWriter.go
    timeCache.go
  • 原文地址:https://www.cnblogs.com/lanleiming/p/5409216.html
Copyright © 2011-2022 走看看