【发布时间】:2019-10-23 03:42:50
【问题描述】:
我有一个输入点列表:
input_points = [{'name': 'a', 'value': (0.0, 1.0)}, {'name': 'b', 'value': (2.0, 1.0)},
{'name': 'c', 'value': (3.0, 1.0)}, {'name': 'd', 'value': (0.0, 3.0)},
{'name': 'e', 'value': (1.0, 2.0)}, {'name': 'f', 'value': (1.5, 1.5)},
{'name': 'g', 'value': (1.0, 1.0)}, {'name': 'h', 'value': (1.5, 2.0)}]
我必须迭代生成两个随机点。我使用 random.sample() 作为:
for x in range(100):
point1 = random.sample(input_points, 2)
print(point1)
但是它给了我一个重复点的组合,这就是为什么我没有在 100 次迭代中得到列表中所有点的组合。但我只需要遍历 100 次迭代中的所有点。有什么方法可以删除重复项,我可以在 100 次迭代中得到所有点的组合。
谢谢
【问题讨论】:
-
对于 8 个点的列表,没有 100 个唯一的 2 点组合。同样使用
random并不是找到所有可能组合的最佳方式。这是学校评估吗?有什么限制? -
8 个点将有 28 个唯一组合,并且我有限制在 100 次迭代中从 8 个点中选择所有 2 个点的唯一组合。
-
你必须使用
random吗?这可以使用两个嵌套的for循环在 28 次迭代中轻松完成。 -
实际上也有计算时间限制,我必须通过实现ransac算法来计算这些点的最佳线拟合。我不限于使用随机。你能告诉我如何使用嵌套循环来实现这个
-
好吧,ransac 算法依赖于随机样本,所以我不确定迭代方法是否能帮助您完成这一点,但我会发布一个示例。