SortedListを用いたランダムシャッフル

ランダムシャッフルって結構使うのに、存外にコード組むのが面倒だったりするんですよね。今回はそんなランダムシャッフルをVisual Basicでサクッと行えるSortedListを紹介します。

Dim sl As New System.Collections.SortedList
With sl
    .Add(Rnd(), "hoge")
    .Add(Rnd(), "piyo")
    .Add(Rnd(), "foo")
    .Add(Rnd(), "bar")
End With
For i As Integer = 0 To sl.Count - 1
    MsgBox(sl.GetByIndex(i))
Next

サンプルコードはこんなところです。今回は"hoge"、"piyo"、"foo"、"bar"の4つの文字列をランダムシャッフルしています。
sl.Add()の第一引数はKey、第二引数はValueで、両方ともObject型です。ここではKeyに乱数を、Valueにシャッフルしたい文字列を入れることで、それぞれの文字列に適当な大きさの数値を割り振ってることになります。
sl.GetByIndex()の引数は0から始まるインデックスを入れることで、Keyの値の小さい方からValueを取得することができるというわけです。

うん、これは便利。VBで実験用プログラム書いている人は是非これを使うことをお勧めしますよ。