当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript获取不重复的随机数的方法比较

Javascript
javascript中的有名函数和无名函数
javascript[js]获取url参数的代码
javascript select 之间传值效果的代码
js正则实现的密码框简单制作,还可以替换成自己想用得符号
脚本控制自适应高度的缩短问题
兼容ie和firefox版本的js反选 全选 多选框
javascript 随机数 与高级应用 附vbscript(asp) 随机数总结
不用确认即可打印的javascript代码
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
用javascript实现div可编辑的常见方法
用JavaScript实现的一个IP地址输入框
用javascript取得传递参数的个数的代码
当鼠标移出灰色区域时候,菜单项怎么隐藏起来
才发现的超链接js导致网页中GIF动画停止的解决方法
javascript window.onerror事件学习新收获
javascript 如何生成不重复的随机数
超个性的导航效果
不能再简单的无闪刷新验证码原理很简单
经常用到的javascript验证函数收集
用js实现手把手教你月入万刀(转贴)

Javascript 中的 javascript获取不重复的随机数的方法比较


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 302 ::
收藏到网摘: n/a

js永不重复随机数实现代码比较

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

点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

不重复的随机数方案2:297毫秒
但是方案1采用了slice方法,此方法重新生成数组,会大量占用内存和cpu运算, 效率很低,所以改良一下,从原始数组取出一个数, 然后让原始数组的这个位置赋值为null 。这样下一次取数的时候判断如果为null就不取,直到不为null为止。 经过测试,可以显著提高效率。
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

不重复的随机数方案3:234毫秒
换一个思路,如果把原始数组origin打散,然后再依次打印,
这样也可以做到随机永不重复,而且效率更高,
因为方案2运行到越后面,原始数组为null的频率就越高,运算的次数就越多。
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]