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