【发布时间】:2019-08-10 03:56:24
【问题描述】:
假设我有一个range(1, n + 1)。我想得到m 唯一的对。
我发现,如果对数接近n(n-1)/2(最大对数),则不能每次都简单地生成随机对,因为它们会开始相互覆盖。我正在寻找一个有点懒惰的解决方案,这将非常有效(在 Python 的世界中)。
到目前为止我的尝试:
def get_input(n, m):
res = str(n) + "\n" + str(m) + "\n"
buffet = range(1, n + 1)
points = set()
while len(points) < m:
x, y = random.sample(buffet, 2)
points.add((x, y)) if x > y else points.add((y, x)) # meeh
for (x, y) in points:
res += "%d %d\n" % (x, y);
return res
【问题讨论】:
标签: python algorithm math graph combinations