記事
JScriptで配列のシャッフル(Fisher-Yates for JScript)
JScript
公開日:2009/04/21 00:00
PerlにはFisher-Yatesという配列をシャッフルする有名なアルゴリズムがあるのですが、これをJScriptに移植してみました。
テストデータの作成とかに役立つかな。
// 配列を拡張
Array.prototype.shuffule = function(){
var l = this.length; // 要素数
var i; // ループ用
var wk; // ソート用のワーク
// 配列の要素が尽きるまでループ
while(--l){
i = Math.floor( Math.random() * (l + 1) );
if(i == l) continue;
// 要素の入替
wk = this[i];
this[i] = this[l];
this[l] = wk;
}
}
// メイン処理
function main(){
var z = [
0, 1, 2, 3, 4,
5, 6, 7, 8, 9
];
var i = 0;
try{
// メイン処理
// これは初期状態
WScript.Echo(z);
// 検証用に数回シャッフルする
for(i = 1; i <= 5; i++){
z.shuffule();
WScript.Echo(z);
}
}catch(ex){
// 例外処理
WScript.Echo(ex.description);
}finally{
// 終了処理
}
};
main();
テストデータの作成とかに役立つかな。

