在二维数组中随机生成簇

Posted

技术标签:

【中文标题】在二维数组中随机生成簇【英文标题】:Randomly generating clusters in a 2d array 【发布时间】:2015-04-09 21:03:30 【问题描述】:

我正在创建一个 2d 瓷砖游戏,并且想知道在其中生成特定瓷砖类型的集群的最佳方法是什么。例如,假设我有一个二维数组是我的地图。草用 0 表示。

0, 0, 0, 0, 0, 0
 0, 0, 0, 0, 0, 0
 0, 0, 0, 0, 0, 0
 0, 0, 0, 0, 0, 0
 0, 0, 0, 0, 0, 0
 0, 0, 0, 0, 0, 0

现在,我想做的是在我的数组中随机创建一个树簇(用 1 表示)。我希望它看起来像这样:

0, 0, 0, 0, 0, 0
 0, 0, 0, 0, 0, 0
 0, 1, 1, 1, 0, 0
 0, 1, 1, 1, 1, 0
 0, 0, 1, 1, 1, 0
 0, 0, 1, 1, 0, 0

最好的方法是什么?

【问题讨论】:

你想要随机树还是预定义树? 不清楚是什么问题。你被困在哪里了? 我不知道如何随机生成树。 那么问题是,您知道如何获得随机数以及您需要随机数吗...所以请阅读此***.com/questions/8236125/… 然后执行 if (x == 4) 2darray[ i][j] = 1;当你生成二维数组时,你如何生成它,你可以制作一些树 有什么理由不能简单地制作一大块地形,有树木,然后从随机位置采样并从中旋转?将其模糊为灰度图像,您也许可以将其与随机阈值一起使用,以获得不同的树木整体密度。 【参考方案1】:

实现一个方法 M 执行此操作:对于给定的一组位置 S,它采用它们的相邻位置 N,但只采用那些内部没有树的位置;将树放在这些相邻位置 N 中的一些,并调用自身递归地仅传入它放置树的相邻位置 K(K 是 N 的子集)。

现在触发整个事情:在一个点上随机放置一棵树p,然后调用 M 将位置 p 的集合/列表传递给方法 M。

该算法保证您将生成一个集群(我的意思是一组树,其中每两棵树由其他树连接)。

确保您的递归在某个点停止(您可以通过引入某些阈值或酌情使用其他启发式方法来实现此目的)。

【讨论】:

以上是关于在二维数组中随机生成簇的主要内容,如果未能解决你的问题,请参考以下文章

用java随机生成一个6行5列的二维数组

PHP中怎么从一个二维数组中随机取出一个值?

用二维数组 jQuery 填充表格

20150414二维数组

C中结构体内有一个成员是二维数组,可以直接赋值另一个一维数组吗?

如何使用 for 循环为二维数组中的元素设置数据值?