如何在我的元胞自动机模型中进行随机运动?例如,如果一个单元格中的元素远多于两个或更多相邻单元格,我想随机选择几个邻居来给出一些元素。我尝试了所有出现在我脑海中的代码,但我的问题是在 Mathematica 中,我必须确保同时一个元素从一个单元格中存活并进入另一个单元格。我想用条件来做,但我不知道怎么做。谁能帮帮我吗?
编辑:我到目前为止使用的代码
我的实际代码非常复杂,所以我将尝试告诉你我用更简单的元胞自动机做了什么。我想在摩尔社区取得成功。我的元胞自动机中的每个单元都有不止一个个体(或没有个体)。我想在我的细胞之间进行随机运动。我做不到,所以我尝试了以下代码,并在我的元胞自动机中使用它,如下所示。
w[i_, j_] :=
If[(i - 4) > j, -1, If[(i - 4) == j, 0, If[(j - 4) > i, 1, 0]]];
dogs[p, p1, p2,p3,p4,p5,p6,p7,p8]:=newp &[
newp = w[p, p1] + w[p, p2] + w[p, p3] + w[p, p4] + w[p, p5] +
w[p, p6] + w[p, p7] + w[p, p8]]
这段代码正在做动作,但不是我想要的,因为如果一个单元格中有 0 个个体,它的邻居都是 5 个,那么最后它有 8 个,它的邻居有 4 个,但我不想要那个,因为我不'不希望其中包含较少个人的单元格最终拥有比其邻居更多的单元格。我希望他们所有人都有接近的价值观,并且仍然有动作。我不知道如何在 Mathematica 中做到这一点。