Delphi/C++ Builder でリストをランダムに並び替え
リストをランダムに並び替えには、いろいろな方法が考えられるけど、先日作って使ったコード Random 関数は (0 ≦ 戻り値 <引数) を返すので、リストの未処理カウンタから乱数を生成して、選ばれた物をリストの後方へ移動させるという理屈 1回目 2回目 3回目 [A] [B] [C] 乱数で選択→移動 [D] [E] [A] [B] 乱数で選択→移動 [D] [E] [C] [A] 乱数で選択→移動 [D] [E] [B] [C] TList 以外の TStringList, TStrings, Generics.Collections.TList でも、引数の型を変えればそのまま使えます procedure RandomList(List: TList); var I: Integer; begin for I := List.Count - 1 downto 1 do begin List.Move(Random(I + 1), I); end; end;