在不重叠的矩形上获取随机坐标

我有一个非常大的矩形(100,000 x 100,000),并且尝试在其上随机放置许多不同大小的圆。我当前的解决方案是将所有先前使用的坐标对存储在地图中,然后随机生成一个新的坐标对,并检查它是否存在于地图中。

func randomCoords(xCoordinateMap map[int]bool, yCoordinateMap map[int]bool, radius int) (int, int) {
    x := rand.Intn((width-radius)-radius) + radius
    y := rand.Intn((height-radius)-radius) + radius

    for xCoordinateMap[x] && yCoordinateMap[y] {
        x = rand.Intn((width-radius)-radius) + radius
        y = rand.Intn((height-radius)-radius) + radius
    }

    xCoordinateMap[x] = true
    yCoordinateMap[y] = true

    return x, y
}

因为我正在生成大量坐标,所以此方法可能会变慢。有没有一种更好的,最重要的是更快的方法来获取矩形上的随机坐标,也许还有一种在圆不重叠的情况下获取它们的方法?

评论