You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Cell邻居列表中随机生成单个(x,y)格式的坐标结果?

问题:从单元格的邻居中随机选取一个坐标

在学校作业中,cell是一个包含x、y坐标的点。需要先生成该点的邻居列表,再从邻居中随机选取一个,返回单个(x,y)格式的坐标。

原代码

import random 
#Qst1
cell=(2,3)
lgn, col = cell
def voisines_PI(cell):
    n=[(lgn-1,col-1),(lgn-1,col+1),(lgn+1,col+1),(lgn+1,col-1)]
    return n
print(voisines_PI(cell))

#Qst2

def voisine_PI_alea(cell):
    m= 0
    b= len(voisines_PI(cell))
    g= random.randint(m,b)
    return g
print(voisine_PI_alea(voisines_PI(cell)))

原代码存在的问题

  • voisines_PI函数未使用传入的cell参数,而是依赖全局的lgn和col,无法处理任意输入的cell
  • voisine_PI_alea函数返回的是随机索引而非目标坐标,且调用时错误地传入邻居列表而非cell
  • random.randint(m,b)的范围错误:randint是闭区间,列表索引范围是0到len(列表)-1,使用randint(0, len(列表))会导致索引越界

修正后的代码

import random 

# 生成cell的四个对角邻居列表
def voisines_PI(cell):
    lgn, col = cell  # 从传入的参数中解析坐标,保证函数通用性
    return [(lgn-1, col-1), (lgn-1, col+1), (lgn+1, col+1), (lgn+1, col-1)]

# 从邻居列表中随机选取一个坐标
def voisine_PI_alea(cell):
    neighbors = voisines_PI(cell)
    return random.choice(neighbors)  # 直接用random.choice简化随机选取逻辑

# 测试示例
cell = (2, 3)
print("所有邻居:", voisines_PI(cell))
print("随机选中的邻居:", voisine_PI_alea(cell))

修正说明

  1. 修正voisines_PI函数:在函数内部解析传入的cell参数,不再依赖全局变量,函数可以处理任意(x,y)格式的cell输入
  2. 重写voisine_PI_alea函数:
    • 先获取目标cell的邻居列表
    • 使用random.choice()直接从列表中随机选取元素,无需手动计算索引,彻底避免索引越界问题
  3. 修正调用逻辑:调用voisine_PI_alea时传入的是原始cell,符合函数的参数设计

内容的提问来源于stack exchange,提问作者RmZ_lbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:35:16