问题描述
我想知道如何绘制每人“走”100 步的 1000 个“步行者”。
我不知道如何绘制一个多于一个步行者的图表,更不用说每走 100 步 1000 步了。
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,-1,2,3,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 列)