我正在处理下面的编码问题,它看起来更像是一个概率问题,而不是编码问题
由5个顶点组成的平台。顶点的坐标为:(-1,0),(0.-1)。(0,0),(0.1)。(1.0)。从顶点(xs,ys)开始,并保持向左(即x坐标减1)、向右(即x坐标增1)、向上或向下随机移动。后续移动的方向是独立的。你到达顶点(xe,ye)然后从平台上掉下来的概率是多少?制约因素:(xs,ys)in [(-1.0),(0.-1),(0.0),(0.1),(1,0)](xe,ye)in [(-1,0),(0.-1),(0,0),(0,1),(1.0)] xs!= xend或ys!= yend
下面是我实现的,它适用于我分享的案例,但对所有其他案例都失败了
def calculate_probability(xs, ys, xe, ye):
edges = [[-1, 0], [0, -1], [0, 1], [1, 0]]
if [xs, ys] in edges:
if xe == 0 and ye == 0:
return 0.25
elif xs == xe and ys == ye:
return 1.0
elif [xe, ye] in edges:
return 0.075
if xs == 0 and ys == 0:
if [xe, ye] in edges:
return 0.3
elif xe == 0 and ye == 0:
return 1
return 0
1条答案
按热度按时间jogvjijk1#
如果我们处理从目的地开始的边缘情况,或者从边缘开始而目的地是中心,我们只剩下一个简单的场景:找到去中心的路,然后到达目的地。到达原点是一个平坦的
0.25
概率,然后它只是一个到达正确边缘的问题。如果你随机走错了方向,你总是可以以0.25
的成功概率回溯。这可以重复任何次数,然后才能走在正确的方向(目的地)。这意味着从原点开始,我们有1/4的机会选择错误的方向,有3/4的机会选择错误的方向。如果我们选对了方向,我们就完了,如果选错了方向,我们就得选相反的方向回到原点,避免掉下去,这是1/4的几率。把这些组合成一个,我们有1/4的机会在第一次是正确的,3/16的机会在第二次。重复这个过程,我们最终得到一个公式:
因此,从原点开始,我们有
4/13
的机会走到正确的边缘图块而不会脱落。在代码中: