VBA講座24 ランダムウォークのアルゴリズム

 VBA 数学マクロ入門講座です。今回は平面上にジグザグな痕跡を描く ランダムウォーク というマクロを作ってみます。

ランダムウォークとは?

 方角を無作為に決定しながら平面上の格子点上を動き回るアルゴリズムのことを ランダムウォーク (random walk) とよびます。ひと口にランダムウォークといっても色々あるのですが、今回はその中で一番単純なモデルを作ってみましょう。具体的には動点が座標 (x, y) にあるときに、その隣(東西南北)にある格子点

  (x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)

のいずれかを 1/4 の確率で選択して移動するというものです。
 

ランダムウォークのマクロ

 空白のシートを開いた状態で、以下のマクロを実行してください。

 Sub RandomWalk()

 Dim x As Integer, y As Integer
 Dim i As Integer, rd As Integer

 '乱数を初期化します
 Randomize

 '出発点の座標を設定します
 x = 0
 y = 0

 '1000 ステップで実行
 For i = 1 To 1000

 '1 から 4 までの乱数を得ます
  rd = Int(4 * 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

 End Select

 Cells(i, 1).Value = x
 Cells(i, 2).Value = y

 Next i

 End Sub

 実行するとシートの A 列と B 列にデータが入力されるので、 A 列と B 列を選択し、グラフウィザードから [散布図 (直線)] を選択して、軸の目盛などを適当に調整してください。次のような図が表示されるはずです。

 VBAランダムウォーク試行1
 
 マクロを実行するたびに、異なったグラフが表示されます。

 VBAランダムウォーク試行2
 
 もっと複雑な法則を組込んで動かすこともできますので、基本アルゴリズムをベースに皆さんで工夫して色々な ランダムウォーク を作ってみてください。面白いものができたら、コメントしてくださいね。

 ≫ AddChartメソッドでグラフを作成します  ≫ 数学マクロ講座

スポンサーリンク
スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください