配列の要素をシャッフルしたい
配列の中身をランダムに変更する関数を作りたいのですが、分からないので教えてください
配列を1周する中で、ランダムに選ばれた配列の要素と該当する配列の要素を1対1で入れ替えることで、ランダムに配列の要素をシャッフル出来ます
umiumiさんの掲示板で、直撃の関数をしろまささんが回答していたので、参考とさせて頂き、ご紹介します。
コード例
DIM list[] = 1,2,3,4,5,6,7,8,9,10 shuffle(list) For num = 0 TO length(list)-1 PRINT list[num] NEXT //---シャッフル関数 Procedure shuffle(var list[]) Dim n = length(list) //配列の要素数 Dim i, r, tmp for i = 0 to n -1 r = random(n) tmp = list[r] //ランダムに選ばれたr番目の配列の値を取得 list[r] = list[i] //配列i番目の値をr番目に入れる list[i] = tmp //入替え完了 next Fend
ただし、UWSCのバージョンが4.0以上でないとエラーが出るようなので、注意です
関連情報: