• 技术文章 >web前端 >js教程

    如何操作JS生成指随机数与随机序列

    php中世界最好的语言php中世界最好的语言2018-05-31 11:53:04原创969
    这次给大家带来如何操作JS生成指随机数与随机序列,JS生成指随机数与随机序列的注意事项有哪些,下面就是实战案例,一起来看一下。

    JavaScript中我们经常使用Math.random()方法生成随机数,但是该方法生成的随机数只是0-1之间的随机数。先看如下常用方法的特征:

    •1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1)

    •2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分。与取整数的parseInt(num)方法一样。

    •3.Math.round(num); 参数num为一个数值,函数结果为num四舍五入后的整数。

    •4.Math.ceil(num); 返回大于等于n的最小整数。

    合理使用上述方法生成指定范围的随机数:

    包含最小值不包含最大值的情况:

      parseInt(num)取整,将传入的num向小的整数转化。将Math.random()乘以最大和最小的差值,在用parseInt处理(注意此时的范围是【0-差值)),再加上最小值,就能得到包括最小值但不包括最大值的整数。

    获取包含最小值但不包括最大值的随机数,用如下函数实现:

    function getRandom1(start, end) {
          var length = end - start;
          var num = parseInt(Math.random() * (length) + start);
          return num;
        }

    包括最大值但不包含最小值的情况:

      Math.ceil(num)取得大于等于num的最小整数,也就是将传入的num向大的整数转化。将Math.random()乘以最大和最小的差值,在用Math.ceil()处理(注意此时的范围是(0-差值】),在加上最小值,就能得到不包括最小值但包括最大值的整数。也就是将上面情况的parseInt改为Math.ceil()

    获取包含最大值但不包括最小值的随机数,用如下函数实现:

     function getRandom1(start, end) {
        var length = end - start;
        var num = Math.ceil(Math.random() * (length) + start);
        return num;
      }

    最大值和最小值都包含的情况:

      最大值和最小值都包含,此时可取值的范围相比于上述两种情况已经 扩大1。在生成随机数阶段,就要将可能生成随机数的范围扩大1。使用parseInt向小的值取整可行,用Math.ceil(num)往大的值转化也可以(转化后需要-1)。不管采用哪种方式,关键在于生成随机数阶段将范围加1.

    采用parseInt的方法

    function getRandom1(start, end) {
        var length = end - start + 1;
        var num = parseInt(Math.random() * (length) + end);
        return num;
      }

    --------------------------------------------------------------------------------

      一些时候,仅仅生成随机数是不够的,还需要将指定范围的数值,按照随机顺序排列。我们将这个问题转化为生成随机数后加入数组并避免重复的问题。每次循环顺序生成的数是随机的,按照顺序加入数组,以此实现数值大小的随机排列。

    生成指定范围的随机数序列:

      随机序列可直接通过sort排序方法实现,将一个包含一组按顺序排列的数字元素,调用sort方法,通过函数传入随机生成的值(可能为正可能为负),就可以将顺序打乱,得到该数组的随机序列。

    如下:getNum()返回的是数字1-10按顺序排列的数组,则得到的numArr就是1-10的随机序列:

      var numArr = getNum().sort(function () {
            return Math.random() - 0.5;
          });

    自己写逻辑生成随机序列也是可行的:

      定义存储随机数的数组,然后循环生成随机数,生成之后到已有数组中查找,如果存在,将标记变为false表示产生的随机数重复,根据标记值来决定是否加入数组。若加入数组成功,则数组下标index(表示数组元素个数)自增,满足条件退出循环。下面例子实现5-10之间的随机序列(下面案例是左右包含的):

    function getOrder(start, end) {
          var length = end - start;
          var myorder = new Array();
          var index = 0;
          while (index < length+1) {
            var flag = true;
            var num = parseInt(Math.random() * (length + 1));
            for (var i in myorder) {
              if (myorder[i] == num) {
                flag = false;
              }
            }
            if (flag == true) {
              myorder[index] = num;
              index++;
            }
          }
          alert(myorder.length);
          alert(myorder);
        }
    getOrder(5, 10);

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    node+koa2+mysql+bootstrap搭建论坛前后端

    JS内this指向使用实例详解

    以上就是如何操作JS生成指随机数与随机序列的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript 随机数 随机
    上一篇:JS加载方式使用汇总 下一篇:怎样操作JS文件内加载jquery.js(附代码)
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 如何安装并管理多版本node?方法介绍• 深入了解Angular中的依赖注入模式(玩法案例)• JavaScript创建多个对象方法总结• 聊聊node+multiparty怎么实现文件上传• 简单聊聊JavaScript中的事件监听
    1/1

    PHP中文网