如何用Julia编写一维随机游走的step(N)函数计算N步后位置
我们考虑一维随机游走,步长为+1和-1。
向前或向后移动的概率均为50%(即p = 1/2)

实现方案
你现有代码的核心问题是没有定义变量累计每一步的位移,也没有按照函数语法封装逻辑,以下是可直接运行的实现:
function step(N) # 初始位置设为原点0 position = 0 for _ in 1:N # rand()生成[0,1)区间均匀分布的随机数,大于0.5的概率为50%,对应向前走 if rand() > 0.5 position += 1 else position -= 1 end end return position end
调用方法
直接传入步数参数即可得到最终位置,例如执行step(10)就能得到10步随机游走后的位置。
如果需要保留打印每一步方向的功能,可以使用调整后的版本:
function step(N) position = 0 for _ in 1:N if rand() > 0.5 step_val = 1 print(1) else step_val = -1 print(-1) end position += step_val end # 打印完所有步后换行 println() return position end
注:你原代码中用的randn()是标准正态分布,虽然大于0的概率确实为50%,但用均匀分布rand()更贴合二项概率的场景,代码可读性更高。
内容的提问来源于stack exchange,提问作者Struggling_Student
相关产品推荐
相关产品推荐

