js随机永不重复数

时间:2011-04-25 19:26:00 

比如说在1-3000之内生成随机永不重复数,
点击运行代码的时候请注意,此代码比较占用资源,
如果硬件配置比较菜请把count改小。
俺的电脑配置是Intel E2160+2G内存,一般,不算菜。所有测试在俺的电脑上运行


方案1:1531 毫秒
一般的思路是先创建一个1-3000的数组,每一次取出一个,然后让这个数组减少一个,
取一个,减少一个,这样就可以做到永不重复了。

 

方案2:297毫秒
但是方案1采用了slice方法,此方法重新生成数组,会大量占用内存和cpu运算,
效率很低,所以改良一下,从原始数组取出一个数,
然后让原始数组的这个位置赋值为null
这样下一次取数的时候判断如果为null就不取,直到不为null为止。
经过测试,可以显著提高效率

方案3:234毫秒
换一个思路,如果把原始数组origin打散,然后再依次打印,
这样也可以做到随机永不重复,而且效率更高,
因为方案2运行到越后面,原始数组为null的频率就越高,运算的次数就越多

方案2、3差不多的原因主要是因为打印的原因

标签:随机数,js
0
投稿

猜你喜欢

  • 如何在不同版本的SQL Server中存储数据

    2009-01-15 13:06:00
  • 关于utf-8格式中截取中英文字符串长度无效的问题

    2008-11-25 14:00:00
  • asp,php 和 jsp 比较 之我见

    2007-08-10 13:35:00
  • CSS 设计中的黄金分割率应用

    2008-11-12 12:17:00
  • 如何修复MySQL数据库表

    2009-03-20 13:24:00
  • 使table也能overflow:hidden

    2008-08-18 21:04:00
  • 解析:校对确定 较为复杂的一些特殊情况

    2008-12-17 16:54:00
  • 如何在MySQL数据库中使用XML数据

    2009-12-29 10:48:00
  • 用Dreamweaver MX轻松操作表格

    2009-05-29 18:41:00
  • Rel与CSS的联合使用

    2010-02-20 13:03:00
  • ASP中生成文件的两种方式

    2007-08-30 09:49:00
  • MySQL的命令行提示符及其表达的意思

    2008-03-17 13:34:00
  • asp如何选择访问速度最快的站点?

    2010-06-10 18:34:00
  • MS SQL7.0的数据迁移到MySQL上的一种方法

    2008-11-01 16:59:00
  • 5个提高你站点可读性的方法

    2011-01-31 17:48:00
  • 设计上的小细节

    2010-06-24 21:44:00
  • 使用 XML HTTP Request 对象[翻译]

    2007-11-07 21:11:00
  • 如何使用Index Server建立一个网站导航地图?

    2010-06-05 12:39:00
  • 浅说相册图片详情页面中大图的浏览方式

    2009-02-01 18:34:00
  • Xml Http抓取数据时乱码问题解决

    2008-04-24 11:16:00
  • asp之家 网络编程 m.aspxhome.com