您好我正在制作我的第一个随机游走计划。我只能弄清楚随机游走程序本身。这是一个简单的1d随机游走,有1000步。这是我的代码到目前为止的样子:
stepslim = 1000;
rnew(1) = 0
r=0;
%Now we will set up the for loop
for isteps = 2:1:stepslim;
if rand <= 0.5 %The if-else statement will tell the walker
step = -1; %which direction it steps in
else
step = +1;
end
rnew(isteps) = rnew(isteps-1) + step; %This adds the new step
end
plot(rnew); %This will plot our random walk
这很好用,现在我需要再尝试一些任务:
运行此模拟X次以生成整体。在整体中的每个模拟结束时记录/存储助行器的最终位置。
为整体中的每个模拟生成助行器结束位置的直方图▪调整箱宽以“理解”结果。
重复并绘制X = [1000,2000,10000,20000,100000,1000000]的结果
我不确定如何重复模拟并将结束值记录到整体中。我很感激在完成这些任务方面提供了一些帮助
答案 0 :(得分:1)
您生成随机游走的方法非常非常非常慢......如果您想改变方法,我建议您使用以下代码:
steps = 1000;
rw = cumsum(-1 + 2 * round(rand(steps,1)),1);
从这一点开始,以下是如何运行模拟x
次,记录每个结果并检索每次模拟的最后一步:
iters = 10;
steps = 1000;
rws = NaN(steps,iters);
for i = 1:iters
rws(:,i) = cumsum(-1 + 2 * round(rand(steps,1)),1);
end
% retrieve the last step
last_steps = rws(end,:);
为了绘制最后步骤的直方图,您可以使用histogram
函数,该函数应足够灵活,可以打印与您的数据足够一致的内容:
histogram(last_steps);
要使用不同的步长,只需将所有内容都包含在另一个for loop
内,您可以在数组中定义的每个步长上循环:
X = [1000, 2000, 10000, 20000, 100000, 1000000];
for j = 1:numel(X)
% previous code with variable "steps" replaced by X(j)
end