使用Julia可视化一维随机游走。

3

我希望了解如何绘制1000个“行走者”,每个行走者都会“行走”100步。


我不确定如何绘制多于一个行走者的图表,更别说有1000个每个都要行走100步。

以下是一个行走者走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]
1个回答

2

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

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列)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接