我被困在这个问题上: 我有一个从坐标 -200,-200(左上)到 200,200(右下)的二维空间。
现在我想在中心 (0,0) 的随机位置添加一个点。 到目前为止,一切都很好。只需为每个 x 和 y 选择一个从 -200 到 200 的随机数。
现在应该重复此操作,直到我获得所需的点数。
但是现在有两个问题:
我不希望两个点位于同一位置。有没有比测试每个点并在必要时重复整个过程更简单快捷的方法?
我不希望这些点立即散布在整个 map 上。他们应该聚集在中心,只有在中心周围最大的点“环”中只剩下一些空间时才离开。
但是这些点之间应该不时有一些空白.
最后一个条件是我最大的问题。有谁知道我该如何解决这个问题?
目前我正尝试在 javascript 中执行此操作,但如果可行,我想使用 mysql 将这些点保存在数据库中,然后使用 php 一个接一个地添加。
最佳答案
我认为没有任何方法可以避免对生成的点进行某种重复检测,除非您通过遍历每个点并根据随机数的结果立即生成整个 map 并打开它。您可以根据距离中心的距离公式来衡量某个点出现的可能性。
但是,一般来说,蒙特卡洛方法没有任何问题,您只需在中心周围生成近似正态分布的点。您可以通过为 x 和 y 获取 3 个随机数,将它们加在一起并除以 3 来做到这一点。这将为您提供一个围绕中心的正常点云。您可以丢弃任何重复项。
关于javascript - 如何在二维中心点周围放置点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56739533/