去年か一昨年ぐらいの事。
サボりの日々が約束された最高の席で、ほぼ毎日antix(Linuxの超軽量OS)内に元々入っていたボードゲームに明け暮れていた我輩。
数は19あり、王道リバーシから、謎の運ゲーロボットまで、それはそれは楽しくやりこんだ。
そんな中、hitoriというゲームのシンプル且つ単純なルールに、
と思った我輩は、壮大な夢を追い求め…
乱数生成を覚えた。
まず、乱数生成には全く関係ないが、
【hitoriルール説明】
最低5×5(縦横同数)のマス内へランダムに入った、1~マス数+1までの数字を、縦横でダブらないように間引く。※例:5×5の場合は数字がランダムに1〜6まで入っている。
ただし、間引こうとした数字の隣に、既に間引かれている数字がある場合は間引けない。
→全数字をhitoriすなわちぼっちにすることが目的。
では早速、以下が乱数生成のVBAコードである↓
※不要なコメントアウトは消してどうぞ。
Sub Ransu() 'マクロ名は任意
Dim cl As Range 'clは変数。Range型でっせ、という宣言(おしらせみたいなもん。一応無くても動くが、あるとエラーのとき間違いに気づきやすい、というか型不一致の間違いが減る気もする)。
For Each cl In Selection 'clは任意の選択範囲でっせ。
Randomize 'ランダムでっせ。※これを入れないと乱数生成→保存→そっ閉じ→開き直し→乱数生成 でデジャ・ヴが生まれる(初回と全く同じ整数が同じパターンで生成される)。
cl.Value = Int(6 * Rnd + 1) 'int=整数。intで囲わないと小数点以下含む乱数が生成される。だって整数って言ってないでしょ?みたいな感じ。
Next cl 'あとはこれを範囲内埋めるように繰り返す。
End Sub
公式(?)は、Int((上限値 - 下限値 + 1)* Rnd + 下限値)らしい。
例えば二進数だとInt(2 * Rnd + 0)になる。
以上。
さて、hitoriはうまく作成出来たか、ということだが、ただの乱数じゃ成立しなかった。ボードゲームってのはシンプルなようでいて、崩壊しないよう練りに練られた奥が深いやつなのだな。
↑プレイしやすいようにこんなことまで考えたのに(ただの条件付き書式)。