ランダムウォークの軌跡を表示するプログラム。
1 ランダムウォークによる拡散をシミュレーションするプログラム。
前回までのプログラムは、100個の粒子が一定回数のランダムウォークにより、どのように拡散するかを表現するものだった。・ブラウン運動による拡散を、単純なランダムウォークとして考察してみる。:https://tanakah17191928.blogspot.com/2024/12/blog-post_14.html
・閉鎖容器内の拡散を、単純なランダムウォークとして考察してみる。:https://tanakah17191928.blogspot.com/2025/01/blog-post.html
今回は1個の粒子について、そのランダムウォークの軌跡を表示するプログラムを考えてみた。
2 ランダムウォークの軌跡を表示するプログラム
Option Explicit
Sub game()
Dim i As Long
Dim p_x As Double, p_y As Double
Dim c As Integer, t As Integer
Dim pi As Double
pi = Atn(1) * 4
p_x = 0
p_y = 0
t = 1000
For i = 1 To t
Cells(i, 1) = p_x
Cells(i, 2) = p_y
c = 0
Randomize
c = Int(360 * Rnd + 1)
p_x = p_x + Cos(c * pi / 180)
p_y = p_y + Sin(c * pi / 180)
Next i
End Sub
(1)$t=100$の場合
(2)$t=500$の場合
(3)$t=1000$の場合
3 【閉鎖容器内】ランダムウォークの軌跡を表示するプログラム
Option Explicit
Sub game()
Dim i As Long
Dim p_x As Double, p_y As Double
Dim c As Integer, t As Integer
Dim pi As Double
pi = Atn(1) * 4
p_x = 0
p_y = 0
t = 1000
For i = 1 To t
Cells(i, 1) = p_x
Cells(i, 2) = p_y
c = 0
Randomize
c = Int(360 * Rnd + 1)
p_x = p_x + Cos(c * pi / 180)
p_y = p_y + Sin(c * pi / 180)
If p_x > 20 Then
p_x = 40 - p_x
ElseIf p_x < -20 Then
p_x = -40 - p_x
End If
If p_y > 20 Then
p_y = 40 - p_y
ElseIf p_y < -20 Then
p_y = -40 - p_y
End If
Next i
End Sub
(1)$t=100$の場合
(2)$t=500$の場合
(3)$t=1000$の場合
4 3次元について
ランダムウォークによる拡散も1個の粒子の軌跡も、3次元でシミュレーションするプログラムを作成することはできる。ただ、そのデータを3次元散布図にする機能がExcelにはないみたい。
データから3次元散布図を作成するフリーソフトもあるし、適当なプログラミング言語で自作することもできそうだけれど、今はそんな気分ではないのでここまでとしたい。
・パチンコ玉と釘の確率・統計(まとめ記事)に戻る。





