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

var count=3000; 
var originalArray=new Array;//原数组 
//给原数组originalArray赋值 
for (var i=0;i<count;i++){ 
originalArray[i]=i+1; 

var d1=new Date().getTime(); 
for (i=0;i<count;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 毫秒。

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

var count=3000; 
var originalArray=new Array;//原数组 
//给原数组originalArray赋值 
for (var i=0;i<count;i++){ 
originalArray[i]=i+1; 

var d1=new Date().getTime(); 
for (var num,i=0;i<count;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<count;i++){ 
originalArray[i]=i+1; 

var d1=new Date().getTime(); 
originalArray.sort(function(){ return 0.5 - Math.random(); }); 
for (var i=0;i<count;i++){ 
document.write(originalArray[i]+" , "); 

var d2=new Date().getTime(); 
document.write("运算耗时"+(d2-d1));

性能:耗时 229 毫秒。 
通过性能分析,得出方法三为最佳方案。

最新文章

  1. AlloyRenderingEngine文本框组件
  2. mysql启动报错The server quit without updating PID file
  3. 学习笔记-Java编程思想
  4. 第一课 移动端&amp;响应式
  5. BZOJ3175 Tjoi2013 攻击装置(二分图匹配)
  6. Jsonp简单认识(后端使用的是asp.net mvc)
  7. SecureCRT设置
  8. what is the virtual machine, when and why we need use it ?
  9. PHP代码安全学习笔记V1.0
  10. Lucas定理的理解与应用
  11. HDU-4515 小Q系列故事——世界上最遥远的距离
  12. 关于初始化C++类成员
  13. Linux-day1-上课笔记
  14. XII Open Cup named after E.V. Pankratiev. GP of Eastern Europe (AMPPZ-2012)
  15. 使用 curses 函数库管理基于文本的屏幕
  16. Eclipse 项目导入 Android Studio 导致的乱码问题
  17. MVC4中使用Uploadify3.2
  18. == 和 equals,equals 与 hashcode,HashSet 和 HashMap,HashMap 和 Hashtable
  19. pig分组统计例子
  20. hadoop 环境配置

热门文章

  1. linux截取字符串之sort、uniq、cut用法
  2. 使用selenium时提示:ImportError:No module named selenium
  3. canvas填充样式
  4. 关于使用Unity开发Kinect时出现的Runtime Error错误的解决方式
  5. 1.由浅入深解析 SimpleDateFormat
  6. web服务器学习1---httpd-2.4.29源码手动编译安装
  7. Leetcode 17.——Letter Combinations of a Phone Number
  8. JavaScript(第三十一天)【JSON】
  9. 第十四,十五周PTA作业
  10. Beta阶段报告