【´・ω・`】:それでは重複無しの乱数を作る定石を紹介しよう。
まずは下のコードを見てくれ。このコードはA列に1から16までの
整数をランダムに並べる・・・・。
!!第1ブロック
%MaxNum = 16
For %i = 1 To %MaxNum
Cells(%i, 1) = %i
Next
!!-----------------------------------------------
!!第2ブロック
Randomize(ThisTime())
For %i = 1 To 100
%X = Int(Rand() * %MaxNum) + 1
%Y = Int(Rand() * %MaxNum) + 1
%Temp = Cells(%X, 1)
Cells(%X, 1)= Cells(%Y, 1)
Cells(%Y, 1) = %Temp
Next
【´・ω・`】:それでは解説しよう。第1ブロックは数字の初期化だ。
ここでA1のセルには1を、A2のセルには2、A3のセルには
3というようにきちんと1~16までの数字を整列させておく。
(●`ε´●):買ってきたばかりのトランプの山と同じようにカードが
順序よくならんでいるわけだな。
【´・ω・`】:その通り。第2ブロックセルの数字をシャッフルする。
ランダムに1から16までの整数値を二つ生成して、
それを%X、%Yとする。そしてA列の%X番目のセルと
%Y番目のセルの値を交換する。
(●`ε´●):それをFor文で100回繰り返しているという訳か。
【´・ω・`】:そう。数字を16から52に変更すればトランプに
136に変更すれば、麻雀の洗牌になるな。
(続く)
コメント