自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...

世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的。

随机漫步(Random  Walk)是一种解决随机问题的方法,它与人类生活息息相关,例如醉汉行走的轨迹、布朗运动(Brownian Motion)、股票的涨跌等都可以用它来模拟。随机漫步已经应用到数学,物理,生物学,医学,经济等领域。

假设某地有一个醉汉,每一秒钟会朝“东”,“南”,“西”,“北”中的一个方向走一步,那么这个醉汉在走了500步之后会在什么地方?1000步呢?是不是随着时间的增长,醉汉离原点越来越远呢?这个问题看似很随机,无法解决,但是如果用电脑程序来模拟,那么就可以很容易地把醉汉行走的轨迹,醉汉离原点的距离展现出来。

解决思路:

设计四个class,分别是:Location(表示醉汉所在的位置),Direction(表示醉汉行走的方向,如果要增加或修改方向,在这个class中修改即可),Field(表示一个醉汉所在的平面区域,如果要增加醉汉的数量,在这个class中修改即可),Drunk(表示醉汉本身)

代码如下:

import math, random, pylab

class Location:

def __init__(self,x,y): #定义醉汉的位置,即平面上的一点,用x和y坐标表示

self.x=x

self.y=y

def move(self,xc,yc): #输入x和y坐标的变动值,返回变动后的坐标

return Location(self.x+xc,self.y+yc)

def getLocation(self):

return self.x,self.y

def getDistance(self,other): #输入另一个点的坐标,根据x轴和y轴变动的距离,算出原点和另一个点之间的直线距离

ox,oy=other.getLocation()

xDist=ox-self.x

yDist=oy-self.y

return math.sqrt(xDist**2+yDist**2)</

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值