【发布时间】:2020-08-19 18:02:58
【问题描述】:
在不包括一组位置的 n*n 矩阵中选择随机位置的最优雅/有效的方法是什么?
示例:想象一个棋盘,所以 n=8,总共有 8*8 = 64 个位置。在 (0, 0), (5, 3), (7, 4) 位置有 3 个棋子。任务是选择一个尚未被棋子占据的随机位置。
这是我想出的:
def get_random_position(n, occupied_positions):
while True:
random_position = (random.choice(range(n)), random.choice(range(n)))
if random_position not in occupied_positions:
return random_position
if __name__ == '__main__':
unoccupied_random_position = get_random_position(8, [(0, 0), (5, 3), (7, 4)])
print(unoccupied_random_position)
时间复杂度对于 n 是恒定的,并且与占用单元的数量成线性关系。因此,如果 90% 的单元格已被占用,则循环将迭代更长的时间。
有没有更好的方法?
【问题讨论】:
标签: algorithm