产生初始选举序列后每个选民都同时看一下周围的人,然后这些选民再同时修改自己的选票
产生初始选举序列
SeedRandom[2016420]
init = RandomChoice[{a, b}, 100]
{b, a, b, a, b, a, b, a, a, a, a, a, b, b, b, a, b, b, a, a, a, b, a,
a, b, b, a, a, b, a, a, a, a, b, a, b, b, a, a, b, b, b, b, a, b, a,
a, b, b, a, a, a, a, a, a, b, b, a, b, a, b, b, a, b, a, b, b, a, b,
a, a, b, b, a, a, a, b, a, a, a, a, b, b, b, b, a, b, b, b, a, b, a,
b, b, b, b, a, b, a, b}
若邻居中有三个或四个人选择a当总统,则该点也选择a,反之则选择b
ArrayFilter[If[Count[Delete[#, 3], a] > 2, a, b] &, init, 2,
Padding -> "Periodic"]
{b, b, b, b, b, b, a, a, a, a, a, b, b, b, b, b, b, a, b, b, a, a, b,
b, a, a, b, b, a, a, a, a, a, a, b, b, a, b, b, b, b, b, b, b, a, b,
b, a, a, b, a, a, a, a, b, a, b, b, b, b, b, b, b, b, b, b, b, b, a,
b, b, a, a, b, b, a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b}
产生初始选举序列后,第1个人看一下周围的人,修改自己的选票,然后第2个人再看一下周围的人,修改自己的选票(注意,此时第1个人已经改过了), 然后第3个人再看一下周围的人,修改自己的选票(注意,此时第1和第二个人都已经改过了),然后第4个人....逐次到100个人。这种情况对a很不利(本来也只有0.3125的概率被修改成a),后面的人会跟风以致大家都选b
SeedRandom[2016409]
init = RandomChoice[{a, b}, 100];
SequenceFoldList[If[Count[Delete[{##}, 3], a] > 2, a, b] &,
init[[-2 ;;]], Join[init, init[[;; 2]]], 5][[3 ;;]]
{a, a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b}
这还不是最糟糕的情况,我故意选得初始序列是最后两个都是a,如果是SeedRandom[2016420]的情况,最后迭代下去大家都会跟风选b