Top / TIPS / トランプのシャッフル

トランプをシャッフルするようなロジックを考えてみましょう。

簡単に説明するために、種類は1種類のみとし、1から13の数で表すものとします。

まず、配列を、2つ作成します。 一つは、シャッフル前の配列、もう一つは、シャッフル後の配列です。シャッフル前の配列には、順序良く、トランプをならべておきましょう。

シャッフル前

01020304050607080910111213

シャッフル後

(要素はありません)

まずは、この中から、ランダム関数を使って、1から13までの乱数を発生させ、一つだけ選びます。
選ばれた数が、5だったとしたら、シャッフル前の配列から、5番目の数を削除し、シャッフル後の配列に追加します。

シャッフル前

010203040607080910111213

シャッフル後

05

こんどは、ランダム関数を使って、1から12までの乱数を発生させ、一つだけ選びます。 選ばれた数が、9だったとしたら、シャッフル前の配列から、9番目の数を削除し、シャッフル後の配列に追加します。

シャッフル前

0102030406070809111213

シャッフル後

0510

あとは、シャッフル前の配列がなくなるまで、これを繰り返していけば、シャッフルできます。

VB でコーディングしてみましょう。
配列の代わりに、コレクションを使うと楽チンです。

   Dim colBefore As Collection
   Dim colAfter As Collection
   Dim i As Long
   Set colBefore = New Collection
   Set colAfter = New Collection
   For i = 1 To 13
       colBefore.Add CStr(i)
   Next
   Do Until colBefore.Count = 0
       i = Int(Rnd(1) * colBefore.Count) + 1
       colAfter.Add colBefore.Item(i)
       colBefore.Remove i
   Loop
   For i = 1 To 13
       Debug.Print colAfter.Item(i)
   Next



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-25 (日) 23:56:03 (2800d)