首页 > 解决方案 > 在 Julia 中可视化一维随机游走

问题描述

我想知道如何绘制每个“步行”100 步的 1000 个“步行者”。
我不知道如何用不止一个步行者绘制图表,更不用说每走 100 步有 1000 个。

下面是一个“步行者”步行 10 步的代码。

function walk(N, init::Int=0)
   trace = Int[init]
   for t in 1:N
       if randn() > 0
          push!(trace, trace[end] + 1)
       else
          push!(trace, trace[end] - 1)
       end
   end

   trace
end
walk(10)
[0, 1, 0, 1, 0, -1, 0, 1, 2, 3, 2]

标签: juliarandom-walk

解决方案


有很多方法可以做到这一点。我会这样做(这不是最有效的方法,但我发现它很容易编写):

using Plots
init = 0
walkers = 1000
walk_length = 100
walks = cumsum(vcat(fill(init, 1, walkers), # initial state
                    rand([-1, 1], walk_length, walkers)), # vertically append move direction
               dims=1) # cumulative sum over the first dimension to get one walk per column
plot(walks, legend=nothing)

在代码walks中是Matrix将每次行走存储在一列中(因此在您的情况下,它有 101 行和 1000 列)


推荐阅读