Random 将数组拆分为混沌子数组?

Random 将数组拆分为混沌子数组?,random,arrays,Random,Arrays,需要将由n行和m列组成的数据数组拆分为大小(近似)相等的s个不相交部分 实际上,n*m不一定能被s整除,所以我们必须处理大小为floor(n*m)和ceil(n*m)的块。然而,目前这是我最不关心的问题 所需的基本属性是,每个块在结构上都与数据的整体性断开,即全局相邻元素的大块既不属于同一块,也不是棋盘格样式的拆分 你有什么建议?我是应该简单地转向随机性,还是有一些整洁的结构适合这种情况?我发现自己在短暂的停机时间里无所事事地反复思考这个问题,似乎应该有一些方法来做到这一点;这在某种程度上取决于

需要将由n行和m列组成的数据数组拆分为大小(近似)相等的s个不相交部分

实际上,n*m不一定能被s整除,所以我们必须处理大小为floor(n*m)和ceil(n*m)的块。然而,目前这是我最不关心的问题

所需的基本属性是,每个块在结构上都与数据的整体性断开,即全局相邻元素的大块既不属于同一块,也不是棋盘格样式的拆分


你有什么建议?我是应该简单地转向随机性,还是有一些整洁的结构适合这种情况?

我发现自己在短暂的停机时间里无所事事地反复思考这个问题,似乎应该有一些方法来做到这一点;这在某种程度上取决于你想要实现什么。这是我一直在想的,以防有用

正如我所理解的,你想把一个nxm数组分成I个大致相等的块,其中n和m是未知的,没有任何相邻的元素共享一个集合

首先,报告告诉我们,你可以用四套来完成这项工作;也许值得一看的是,是否有一个现有的算法来为数组计算这些值。在规模的另一端,您可以通过为每个元素分配它自己的单例集,对nxm组执行此操作

你如何做到这一点取决于你想最小化什么——例如,你是否想要最小数量的i组。如果这不是问题,您可以尝试以下方法:

单看n,如果n是偶数,将数组分成大小为n/2的集合,然后创建n/2集合-一个包含每组的第一个元素,一个包含第二个元素,等等。这些集合将仅包含非连续元素。如果n是奇数,则创建一个由第n个元素组成的单例集,然后按照上面的步骤处理余数

在一维的情况下,这将为您提供n/2组大小为2的数据集,可能还有一组额外的大小为1的数据集。它也将与2维一起工作,将n和m向上划分,如上所述

如前所述,这可能不是您想要的答案,但我希望它可能有助于促进进一步的调查-例如,您可以将奇数/偶数检查替换为最高公因数或素数分解的检查。关于这一点,或许也值得一问


我可以编写一些伪代码(或一些python)来说明如何实现上述功能,如果这样做有用的话

清楚地说明您在这里使用的是php可能是一个好主意(如果确实是这样的话)。@farmergeden谢谢您的评论。我实际上是在用MatLab测试和可视化结果。无论如何,想法和/或伪代码都可以。