algorithm - 生成具有定义的最小和最大距离的随机点

标签 algorithm

我需要在 2D 空间中生成具有定义的最小和最大可能距离的点的算法思路。

基本上,我想找到一种在充满点的 2D 空间中插入点的好方法,这样点具有随机位置,但距离最近的点也大于 MINIMUM_DISTANCE_NUM 且小于 MAXIMUM_DISTANCE_NUM。

我需要它来玩游戏,所以它应该很快,并且不依赖于随机概率。

最佳答案

将点集存储在 Kd tree 中.随机生成一个新点,然后检查它最近的邻居,这些邻居可以在 Kd 树中快速查找。如果该点被接受(即 MIN_DIST < 最近邻居 < MAX_DIST),则将其添加到树中。

我应该注意,这在点不是太紧密的情况下效果最好,即 MIN * N << L,其中 N 是点的数量,L 是您将它们放入的盒子的尺寸。如果这不是真的,那么大多数新点将被拒绝。但是想一想,在这个极限下,你是在把弹珠装进一个盒子里,在一定密度以上,排列根本不可能很“随机”。

关于algorithm - 生成具有定义的最小和最大距离的随机点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930796/

相关文章:

algorithm - 降低排序算法中的大 O 复杂度

algorithm - 排列组合的唯一性

java - Java Garbage Collect 是否总是必须为 "Stop-the-World"?

Javascript:根据属性计算产品变体的数量

c - C语言算法——谁是获胜队

algorithm - 以下与平方根: T(n)=T([√n])+logn?的递归关系的解是什么

algorithm - 在包含点的 Voronoi 图中有效地找到多边形

java - 为什么该方法会更改传递的数组的值

c++ - C/C++中固定大小栈的树遍历

algorithm - 多桶填充