奇特工作室
flash让我的生活更美好!QQ:28787999
导航
Index
Search
TagCloud
GuestBook
Admin
« 做了这么多年张信哲的歌迷!今天。。。
推荐高效的数组重排算法 »
2007-9-4 10:27:39
随机打乱数组成员的算法
kinglong老大在06年11月发的
function rndArray(arr:Array, ret:Array):Void { if (arr.length>1) { var id:Number = getRndNumber(0,arr.length-1); ret.push(arr[id]); arr.splice(id, 1); this.rndArray(arr, ret); } else { ret.push(arr[0]); } } function getRndNumber(s:Number, e:Number):Number { switch(arguments.length){ case 0: return int(Math.random()*100+1); break; case 1: return int(Math.random()*(s+1)); break; default: return int(Math.random()*(e-s+1)+s); break; } } //调用; var right2:Array = new Array(1,2,3,4,5,6,7,8); var right2_out:Array = new Array(); rndArray(right2,right2_out); //显示; trace(right2_out);
棉花糖老兄的代码。相当不错!喜欢。
Array.prototype.random = function ($lim:Number):Array { var tmp:Array = this.concat(); var len:Number = tmp.length; for (var i = 0; i < (($lim && $lim < (len-1)) ? $lim : (len-1)); i++) { var n:Number = len - i; var r:Number = random(n); var t:Number = tmp[r]; tmp[r] = tmp[n-1]; tmp[n-1] = t; } return tmp.slice(-$lim); } var myArray:Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; trace(myArray.random());
源自经典论坛的这个贴子:http://bbs.blueidea.com/thread-2693955-1-1.html
最后来自 Hack86 的总结:
//随机排序方式 function randomsort() { return Math.random()>.5 ? -1 : 1; } //利用系统函数随机打乱 function arrRandomSort(arr){ arr.sort(randomsort); } //多执行几次,保证随机性(by:Hack86) function perfection(n){ for(var i = 0; i<n; i++){ arrRandomSort(arr); } } //或者更改原函数(by:Hack86) function arrRandomSort(arr,n){ for(var i = 0; i<n; i++){ arr.sort(randomsort); } } //实例化(根据需要修改去!哈哈~~~) myArr = [1,2,3,4,5,6,7,8,9,0]; arrRandomSort(myArr,myArr.length); trace(myArr)
倒是没想过 sort 可以这样用...
Tags:
数组
代码
打乱
发布:qiter | 分类:[迷恋]Flash | 评论:0 | 引用:0 | 浏览:
点击这里获取该日志的TrackBack引用地址
相关文章:
发表评论:
名称(*)
邮箱
网站链接
验证(*)
正文(*)(留言最长字数:1000)
记住我,下次回复时不用重新输入个人信息
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
日历
最新评论及回复
最近发表
Powered By
Z-Blog 1.8 Walle Build 91204
Copyright qiter.com by Rights Reserved.