FlashLite2.0だとspliceとか配列使えるし・・・だけど1.1だとそうはいかない。
てなわけでeval変数を使って擬似配列を作成し、入れ替えシャッフルするスクリプトを。
————————————————–
//ランダム割り当て
tgt = 12//総数
for(i=1;i<=tgt;i++){ //変数r1~r12の生成
eval(“r” add i) = i;
}
for(i=tgt;i>=1;i–){ //変数r1~r12のシャッフル
a = eval(“r” add i);
b = random(i)+1;
eval (“r” add i) = eval(“r” add b);
eval(“r” add b) = a;
}
————————————————–
一応上の感じでトレースしたところちゃんとシャッフルされておりました。やたー。
最初のtgt = 12はまぁべたに書いてもいい部分ですが
(後で数変えたりするのなら楽かなーと)
流れとしては
(1)for文を使ってr1~r12までの変数をさっと作る。
r1=1など、数字もリンクしたほんとベタな感じです。
(2)for文を使ってr1~r12の中の数字をランダムシャッフルして変更します。
aとbの格納用の変数を使って、r12からカウントダウンしながら
r(i)変数とランダムで選出されたr(ランダム)変数を入れ替えていく感じでしょうか。
と、書いてみて整理できたような気が(笑)
相方:プログラマーに「eval変数を使った配列のランダム~」などと聞いてみたところ、
概要を教えてくれたのですが
「会社の部下とかに同じ内容聞かれたら
そんなこともわからんのか!と怒るほど基本的な内容ですがな」
といわれてしまった。とほほ。
でも良く使うのよねきっと。よしひとつ賢くなった、ということにしておく。