课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > js随机数是这么产生的!
  • js随机数是这么产生的!

    发布:昆明Java培训      来源:达内新闻      时间:2016-04-15

  • 在JavaScript中,一般产生的随机数会重复,但是有时我们需要不重复的随机数,如何实现?下面昆明java培训中心来讲解三种方法产生不重复的随机数,并进行比较,看那种方法效率高。

    方法一

    思路:首先创建一个1到3000的数组,每次取一个数,然后去除数组中取出的这个数, 这样就可以实现永不重复。

    代码如下:

    var count=3000;

    var originalArray=new Array;//原数组

    //给原数组originalArray赋值

    for (var i=0;i

    originalArray[i]=i+1;

    }

    var d1=new Date().getTime();

    for (i=0;i

    var index=Math.floor(Math.random()*originalArray.length); //随机取一个位置

    document.write(index+" , ");

    originalArray.splice(index,1);

    }

    var d2=new Date().getTime();

    document.write("运算耗时"+(d2-d1));

    性能:耗时1528毫秒。

    方法二

    昆明java培训

    思路:对方法一的slice方法进行改进,以提高效率。还是从原数组取出一个数, 然后让原数组的这个位置赋值为null。下一次取数时判断是否为null,如果是null就不取。

    复制代码 代码如下:

    var count=3000;

    var originalArray=new Array;//原数组

    //给原数组originalArray赋值

    for (var i=0;i

    originalArray[i]=i+1;

    }

    var d1=new Date().getTime();

    for (var num,i=0;i

    do{

    num=Math.floor(Math.random()*count);

    }while(originalArray[num]==null);

    document.write(originalArray[num]+" , ");

    originalArray[num]=null;

    }

    var d2=new Date().getTime();

    document.write("运算耗时"+(d2-d1));

    性能:耗时290毫秒。

    方法三

    思路:把原数组打散,然后再依次输出, 这样也可以做到随机永不重复,且效率更高。

    代码如下:

    var count=3000;

    var originalArray=new Array;//原数组

    //给原数组originalArray赋值

    for (var i=0;i

    originalArray[i]=i+1;

    }

    var d1=new Date().getTime();

    originalArray.sort(function(){ return 0.5 - Math.random(); });

    for (var i=0;i

    document.write(originalArray[i]+" , ");

    }

    var d2=new Date().getTime();

    document.write("运算耗时"+(d2-d1));

    性能:耗时229毫秒。

    通过性能分析,得出方法三为最佳方案。

    达内教育和甲骨文有着很好的合作关系,对于java培训我们有着更好的资料和培训系统,选择昆明java培训,选择一个高薪的行业。

    推荐文章

上一篇:第三届“达内发现杯”大学生互联网软件设计大奖赛完美收官

下一篇:复制功能调用实现方案

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56