이 질문은 천문학적으로 작은 것에서 거의 100 %까지 다양한 답변을 받고 있기 때문에 개선 된 솔루션에 대한 참조 및 영감을 제공하는 시뮬레이션을 제공하고 싶습니다.
나는 이것을 "화염 플롯"이라고 부릅니다. 각각은 별개의 세대에서 번식 할 때 집단 내에서 유전 물질의 분산을 기록합니다. 줄거리는 사람을 묘사하는 얇은 세로 세그먼트의 배열입니다. 각 행은 세대를 나타내고 시작은 맨 위에 있습니다. 각 세대의 자손은 바로 아래에 있습니다.
처음에는 크기의 모집단에서 한 사람 만 표시되고 빨간색으로 표시됩니다. (보기 힘들지만 항상 맨 오른쪽 줄에 그려져 있습니다.) 그들의 직계 후손도 마찬가지로 빨간색으로 그려져 있습니다. 그들은 완전히 임의의 위치에 나타납니다. 다른 자손은 흰색으로 표시됩니다. 인구 규모는 세대마다 다를 수 있으므로 빈 공간을 채우려면 오른쪽의 회색 테두리가 사용됩니다.n
다음은 20 개의 독립적 인 시뮬레이션 결과 배열입니다.
적색 유전 물질은 9 개의 시뮬레이션에서 결국 사망하여 생존자는 나머지 11 명 (55 %)으로 남았습니다. (하나의 시나리오에서 왼쪽 하단은 전체 인구가 결국 사망 한 것처럼 보입니다.) 생존자가있는 곳은 거의 모든 인구에 적색 유전 물질이 포함되어 있습니다. 이것은 적색 유전자를 포함하는 마지막 세대에서 무작위로 선택된 개체의 확률이 약 50 %라는 증거를 제공합니다.
시뮬레이션은 각 세대의 초기에 생존율과 평균 출생률을 무작위로 결정함으로써 작동합니다. 생존율은 베타 (6,2) 분포에서 도출됩니다. 평균 75 %입니다. 이 숫자는 성인이되기 전의 사망률과 자녀가없는 사람을 나타냅니다. 출생률은 감마 (2.8, 1) 분포에서 가져 오므로 평균 2.8입니다. 결과적으로 일반적으로 높은 사망률을 보상하기에 불충분 한 생식 능력에 대한 잔인한 이야기가 있습니다. 그것은 매우 비관적이고 최악의 모델을 나타냅니다. 그러나 (설명에서 제안한 바와 같이) 인구의 성장 능력은 필수적이지 않습니다. 각 세대에서 중요한 것은 인구 내에서 적색 의 비율 입니다.
재생산을 모델링하기 위해, 원하는 크기의 간단한 랜덤 샘플을 취함으로써 현재 모집단이 생존자로 얇아집니다. 이 생존자들은 무작위로 짝을 짓습니다 (페어링 후에 남은 이상한 생존자는 재생산되지 않습니다). 각 쌍은 포아송 분포에서 나온 많은 수의 어린이를 생산하며 그 평균은 세대의 출생률입니다. 부모 중 하나 에 빨간색 마커가 포함되어 있으면 모든 자식이이를 상속받습니다. 이는 부모 중 하나를 통한 직접 하강의 아이디어를 모델링합니다.
이 예제는 모집단 512로 시작하여 11 세대 (시작을 포함하여 12 행)에 대한 시뮬레이션을 실행합니다. 적은으로 시작하여 시뮬레이션의 변화 과 많은 등 2 14 = 16 , 384 의 생존 출생 비율, 모든 전시 유사한 특성의 다른 양을 사용했습니다 : 말까지 로그 2 ( N ) 세대 (구 이 경우), 모든 빨강이 죽었을 확률은 약 1/3이지만, 그렇지 않은 경우 대다수의 인구가 빨강입니다. 2 세대 또는 3 세대 내에서 거의 모든 인구가 적색이며 적색으로 유지됩니다 (또는 인구는 모두 사망합니다).n=8214=16,384log2(n)
그건 그렇고, 한 세대에서 75 % 이하의 생존율은 공상적이지 않습니다. 1347 년 후반에 유행성 전염병에 걸린 쥐는 처음부터 아시아에서 유럽으로 향했다. 그 후 3 년 동안 유럽 인구의 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