空想曲線

吉里吉里2/KAG3でのゲーム制作に使える小ネタ置き場。ゲーム用素材も置いてます。

吉里吉里/KAG:配列の中身をシャッフルする  

2013-10-18[Fri]
cm0
tb0

吉里吉里/KAGちょいネタシリーズ。

配列のシャッフルについて書こうと思っていたんだけれども
どうにも上手い説明が思いつかなくて悩んでいた。

結局、思いつかなかったのでスクリプトだけ書いときます。
コピペしてご利用ください。



スクリプト


// 引数 arr には配列変数が入る
// i = 配列の長さ
// j = 入れ替え元の配列の添字
// t = 配列の最後の添字


 function Sfl( arr )
  {
   while( i )
   {
    var j = Math.floor( Math.random()*1 );
    var t = arr[ --i ];
    arr[ i ] = arr[ j ];
    arr[ j ] = t;
   }
  }



処理の流れ


1.入れ替える配列の添字( j )をランダムで決める
2.t に配列変数 arr の一番最後の添字に入ってる要素を放り込む
3.arr[ i ](後ろから二番目の添字の要素)に arr[ j ]を入れて
4.arr[ j ] t (arr の一番後ろの添字の要素)を入れる
5.これを配列の長さだけ繰り返す



欠 点


入れ替え元となる配列の添字が完全にランダムで決まるため
i = j = 0 になってしまった場合、意味のない処理をしてしまう。



使用するには


KAGシナリオ内で次のように記述します。

[eval exp="Sfl(「f.hoge」などの配列変数名)" ]


では、今回はこれにてー (´∀`*)ノシ


関連記事

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kopacurve.blog33.fc2.com/tb.php/325-f2731117
この記事にトラックバックする(FC2ブログユーザー)

現在のページ

Category

Link

Comment

Mailform

Author

Twitter