因为这个问题收到的答案从天文小到几乎100%不等,所以我想提供一个模拟,以作为改进解决方案的参考和启发。
我称这些为“火焰图”。每个人都记录了遗传物质在种群中的离散分布,因为它们是离散世代繁殖的。这些图是描绘人的细小垂直段的阵列。每行代表一个世代,首个世代位于顶部。每一代的后代都在紧靠其下方的行中。
开始时,只有一个人口为被标记,并以红色标出。(很难看到,但是它们总是绘制在第一行的右边。)它们的直接后代同样用红色绘制;他们将出现在完全随机的位置。其他子孙被绘制为白色。由于人口数量在一代之间变化,因此右侧的灰色边框用于填充空白空间。n
这里是20个独立仿真结果的数组。
红色遗传物质最终在这些模拟中的9个中消失了,其余11个(55%)留下了幸存者。(在一种情况下,最左下角似乎是整个人口最终都灭绝了。)尽管有幸存者,但几乎所有人口都含有红色遗传物质。这提供了证据,即从最后一个包含红色基因的人中随机选择一个个体的机会约为50%。
该模拟通过随机确定每一代开始时的生存率和平均出生率来进行。生存率来自Beta(6,2)分布:平均为75%。这个数字既反映了成年之前的死亡率,也反映了没有孩子的人的死亡率。出生率是根据Gamma(2.8,1)分布得出的,因此平均为2.8。结果是一个残酷的故事,即生殖能力不足以补偿普遍的高死亡率。它代表了一种极其悲观的,最坏的情况-但是,正如我在评论中所建议的那样,人口增长的能力并不是必需的。每一代重要的是人口中红色的比例。
为了模拟繁殖,通过采集所需大小的简单随机样本,将当前种群减少到幸存者。这些幸存者是随机配对的(配对后剩下的任何奇怪的幸存者都无法繁殖)。每对产生一个从泊松分布中抽取的孩子,其平均值是该代人的出生率。如果父母双方中的任何一个包含红色标记,则所有孩子都继承红色标记:这将模拟通过父母双方直接后裔的想法。
本示例以512人口开始,并运行了11代(包括起点在内的12行)的模拟。此模拟的变体从到多达人,使用不同数量的和出生率,都表现出相似的特征:到代结束(在这种情况下为9),大约有1/3的可能性所有红色都消失了,但是如果没有,则大多数人口都是红色。在两到三代之内,几乎所有人口都是红色的,并将保持红色(否则人口将全部丧生)。2 14 = 16 ,384 日志2(Ñ )n=8214=16,384log2(n)
顺便说一句,一代人中75%或更少的幸存者并不幻想。在1347年末,感染了鼠疫的老鼠首先从亚洲进入了欧洲。在接下来的三年中,约有10%至50%的欧洲人口因此丧生。鼠疫在几百年后的几代人中几乎都复发了一次(但通常没有相同的极端死亡率)。
码
模拟是使用Mathematica 8 创建的:
randomPairs[s_List] := Partition[s[[Ordering[RandomReal[{0, 1}, Length[s]]]]], 2];
next[s_List, survive_, nKids_] := Flatten[ConstantArray[Max[#],
RandomVariate[PoissonDistribution[nKids]]] & /@
randomPairs[RandomSample[s, Ceiling[survive Length[s]]]]]
Partition[Table[
With[{n = 6}, ArrayPlot[NestList[next[#, RandomVariate[BetaDistribution[6, 2]],
RandomVariate[GammaDistribution[3.2, 1]]] &,
Join[ConstantArray[0, 2^n - 1], ConstantArray[1, 1]], n + 2],
AspectRatio -> 2^(n/3)/(2 n),
ColorRules -> {1 -> RGBColor[.6, .1, .1]},
Background -> RGBColor[.9, .9, .9]]
], {i, 1, 20}
], 4] // TableForm