
格子点上を8方向に移動するランダムウォーク
今回は 格子点上を8方向に移動するランダムウォーク を作ってみました。

基本形の4方向に動くランダムウォークは 姉妹サイトの記事 を参考にしてください。
マクロは追記に載せてあるので、自分の Excel で遊んでみたい人は自由にお持ち帰りください。マクロを実行すると A 列と B 列にデータが出力されます。[散布図] の [直線] という種類を選択すると次のような軌跡が描かれます。

こういう模様って、何かのデザインに使えたりしませんかね?
...... 無理かな。まあいいや。もう1つ載せておきますね。

今度はずいぶんと広い範囲を動き回ってます。
でね、この模様を前衛的なデザインとして ......
え? その話はもういい? あ、そう。
VBA マクロ RandomWalk8
Sub RandomWalk8()
Dim x As Integer, y As Integer
Dim i As Integer, rd As Integer
Randomize
'スタート地点を選びます
x = 0
y = 0
Cells(1, 1).Value = x
Cells(1, 2).Value = y
For i = 1 To 999
rd = Int(8 * RND + 1)
'乱数に応じて移動方向を定めます
Select Case rd
Case 1
x = x + 1
Case 2
x = x - 1
Case 3
y = y + 1
Case 4
y = y - 1
Case 5
x = x + 1
y = y + 1
Case 6
x = x + 1
y = y - 1
Case 7
x = x - 1
y = y + 1
Case 8
x = x - 1
y = y - 1
End Select
Cells(i + 1, 1).Value = x
Cells(i + 1, 2).Value = y
Next i
End Sub
Dim x As Integer, y As Integer
Dim i As Integer, rd As Integer
Randomize
'スタート地点を選びます
x = 0
y = 0
Cells(1, 1).Value = x
Cells(1, 2).Value = y
For i = 1 To 999
rd = Int(8 * RND + 1)
'乱数に応じて移動方向を定めます
Select Case rd
Case 1
x = x + 1
Case 2
x = x - 1
Case 3
y = y + 1
Case 4
y = y - 1
Case 5
x = x + 1
y = y + 1
Case 6
x = x + 1
y = y - 1
Case 7
x = x - 1
y = y + 1
Case 8
x = x - 1
y = y - 1
End Select
Cells(i + 1, 1).Value = x
Cells(i + 1, 2).Value = y
Next i
End Sub
マクロを実行するときには新しいシートを用意しておいてください。