Wiederbevölkerung nach der Flut
Beitrag des Monats: Mai 2004
von thelodger
Betreff: a little program I wrote for playing around with repopulation after the flood Datum: 12. Mai 2004 Message-ID: had4a0t2v6h2fq1o4dglraet2q0m0003d1@4ax.com
Ich hatte diese Nachricht ursprünglich tief in einem Thread gepostet, um von Pastor Dave Einblick zu bekommen. Ich habe mich entschieden, sie an einem etwas sichtbarerem Ort zu posten, falls einige Creationisten dazu etwas zu sagen haben....
Der erste Ansatzpunkt für die Idee, dies überhaupt zu tun, kam aus einem Telefonat mit einem Ältesten von JW, in dem er vorschlug, dass ich anstatt zu versuchen, die Bibel zu widerlegen, versuchen sollte, stattdessen zu beweisen, dass sie für mich stimmig ist. Ich weiß, dass das bereits ein langer Beitrag ist, aber ich habe ihn verlängert, indem ich den Java-Quelltext für meine Klassen Person und Civilization hinzugefügt habe. Dies ist ein ausgesprochen vereinfachtes Programm, und ich bin sicher, dass viele von euch Verbesserungen/Korrekturen/etc. anbieten werden. Man sollte beachten, dass ich es aus Spaß in etwa einer Stunde geschrieben habe.
*** begin repost ***
Ich möchte wirklich genau wissen, wie man die Frage löst, wie es der Erde überhaupt gelang, sich schnell genug wieder zu bevölkern, um die Entstehung von Ägypten, Mesopotamien und China im Zeitraum direkt nach der Flut zu ermöglichen.
Jetzt, so wurde mir erklärt, ist alle menschliche Zivilisation nach der Flut entstanden. Mit Alter und Daten der Bibel ist es möglich, das genaue Jahr zu bestimmen (ausgehend von der Erschaffung Adams im Jahr 4026 v. Chr.):
Von der Erschaffung Adams bis zur Geburt von Seth 130 Jahre Dann bis zur Geburt von Enosch 105 Jahre Bis zur Geburt von Kenan 90 Jahre Bis zur Geburt von Mahalalel 70 Jahre Bis zur Geburt von Jared 65 Jahre Bis zur Geburt von Enoch 162 Jahre Bis zur Geburt von Methusalem 65 Jahre Bis zur Geburt von Lamech 187 Jahre Bis zur Geburt von Noah 182 Jahre Bis zur Flut 600 Jahre
Dank der biblischen Genealogie und Chronologie kann die Flut auf 2370 v. Chr. festgelegt werden, grob 4.400 Jahre her, wie Sie sagten.
Jedenfalls waren die Stammeltern der modernen Menschheit Ham, Sem und Japheth, die drei Söhne Noahs und ihre Ehefrauen. Sie waren fruchtbar und vermehren sich nach der Flut bis ungefähr zur Zeit Pelegs, als der Turm zu Babel gebaut wurde. Der Bau des Turms führte zur Verstreuung verschiedener Ethnien- und Sprachgruppen in alle Ecken der Erde, und der Rest, wie man sagt, ist Geschichte.
Aus der Bibel ist es unmöglich, den exakten Zeitpunkt des Turms von Babel zu ermitteln, aber nach dem Lebensdatum Pelegs wird er auf etwa 180 Jahre nach der Flut geschätzt.
Das früheste bekannte ägyptische Grabdenkmal (die Stufenpyramide) wurde etwa 300 Jahre vor diesem Zeitpunkt datiert; die etwas spätere Rote Pyramide, die Bent-Pyramide und natürlich die Pyramiden von Gizeh sowie die Sphinx werden ebenfalls im Allgemeinen als vor dem biblischen Flutdatum datiert. Natürlich müssen diese Datierungen um ungefähr 500 Jahre oder so falsch liegen, damit deren Bau nach dem Turm von Babel stattgefunden haben könnte. Wenn wir also annehmen, dass das so ist, lautet die nächste Frage, wie viele Menschen damals in Ägypten lebendig sein mussten, um den Bau der Pyramiden zu ermöglichen. Es ist eigentlich unmöglich, das genau zu sagen, aber die allgemein akzeptierte Schätzung liegt bei etwa 1–2 Millionen Menschen in Ägypten zu diesem Zeitpunkt und einer Pyramidenbau-Belegschaft von rund 20.000 Menschen.
Natürlich ist nicht nur Ägypten zu berücksichtigen. Die ganze fruchtbare Halbmond-Region, Sumerien, Akkadien, Babylon selbst – diese gesamte Region wurde ebenso kurz nach der Flut besiedelt, und es wurden zahlreiche Städte erbaut, die mindestens Hunderte von Tausenden und vermutlich noch Millionen weitere Menschen anzeigen.
In China gibt es um 2100 v. Chr. (nachweislich fast 300 Jahre nach der Flut) die frühesten überlieferten Aufzeichnungen einer Xia-Dynastie. Daher gingen offenbar die Chinesisch orientierten Nachkommen der Flutüberlebenden, als sie bei Babel verstreut wurden, eine Weile auf dem Weg dorthin und entwickelten danach ihre Kultur. Offenbar lebten zu dieser Zeit in China ebenfalls Zehner- oder vielleicht Hunderttausende Menschen.
Also habe ich, um zu prüfen, ob ich die Realitäten der menschlichen Biologie treffen und ein Wiederbevölkerungs-Szenario annehmen könnte, heute ein Computerprogramm geschrieben (ich bin Programmierer). Ich habe nach modernen Maßstäben viele unvernünftige Annahmen gemacht, aber ich nahm an, dass Gott durch Wunderkräfte die Wiederbevölkerungsbemühung beschleunigen und stützen würde. Mein Programm nimmt verschiedene Parameter, beginnt aber mit der Anfangsbedingung, dass 6 reproduktive Paare von Menschen (die Bibel sagt nicht, dass Noah und seine Frau mehr Kinder als die drei hatten) begannen, mit der höchstmöglichen Geschwindigkeit zu zeugen. Die Fortpflanzung wurde göttlich so unterstützt, dass sie so effektiv wie möglich war. Hier sind die Rahmenbedingungen, so optimistisch, wie ich sie mir vorstellen konnte:
- Die maximale menschliche Lebenserwartung liegt über 120 Jahren.
- Alle Frauen zwischen 13 und 55 haben jede einzelne Woche Sex, wenn sie nicht ihre Regel haben oder gerade schwanger sind; im Durchschnitt sind zu jedem Zeitpunkt 90 % aller potenziell schwangeren Frauen schwanger.
- Ihre Chancen auf erfolgreiche Befruchtung je Versuch betragen 1 zu 3.
- Sobald ein Mädchen 13 wird, beginnt es mit Kindern, ohne Ausnahmen, und bleibt bis zum Alter von 55 aktiv bei der Kinderzeugung.
- Es gibt keine Säuglingssterblichkeit.
- Es gibt keine Todesfälle bei der Geburt.
- Die Sterberaten sind insgesamt deutlich niedriger als in der Gegenwart.
Mein Ziel in dieser Simulation war zu sehen, was geschieht, wenn die Geburtenraten hoch genug beschleunigt werden, um die Bevölkerungszahlen für die ägyptische, mesopotamische und chinesische Kultur zu ermöglichen.
Ich habe dieses Programm viele Male ausgeführt und weiß, dass es relativ fehlerhaft ist, aber wo immer möglich habe ich mich auf wunderhafte Fortpflanzungsraten zugunsten der Ergebnisse gestützt, nicht auf bekannte Bevölkerungswachstumsraten. Nach 180 Jahren seit der Flut, ungefähr im Zeitraum des Turms zu Babel, liefert das Programm Bevölkerungszahlen in etwa dem folgenden Bereich (dies sind Werte einer spezifischen Ausführung, zufällige Faktoren führen zu leicht abweichenden Zahlen bei jeder Durchlaufzeit):
- Erdbevölkerung: 61.162
Hey, nicht schlecht, dachte ich, als ich es das erste Mal laufen ließ. Eine ordentliche Anfangsbevölkerung für Babel, und nur etwa 500 Jahre nach den behaupteten ägyptischen Daten... Dann entschied ich, es aufzuschlüsseln und entdeckte etwas Faszinierendes... Fast alle sind Kinder unter 12:
- Mädchen unter 12: 25.989
- Jungen unter 12: 21.446
- Erwachsene (über 12 gilt hier als erwachsen): 13.727
Außerdem waren bei dem Zeitpunkt, an dem ich meine Simulation nach 180 Jahren beendete, 6.694 Frauen über 13 Jahre alt am Leben, von denen 5.291 aktuell schwanger waren. Der Rest war erwachsene Männer.
So gibt es an dieser Stelle schwerwiegende Probleme. Erstens läuft uns die Zeit davon, weil die Daten der Pyramiden weiter in die Vergangenheit rücken und diese Lücke nur begrenzt groß sein kann, damit sie noch glaubwürdig bleibt. Zweitens ist eine Welt, die nur aus etwa 7.000 „erwachsenen“ Männern, 5.300 schwangeren Frauen und 48.000 Kindern besteht, keine, in der sich die Bevölkerung ausbreiten, riesige Städte und Denkmäler bauen, Schreiben entwickeln und all das entwickeln könnte, weil alle damit beschäftigt wären, Kinder aufzuziehen – und schließlich fehlen uns einige Millionen Menschen. Die Körper sind einfach nicht da. Man könnte das für noch einige hundert Jahre weitermachen (und nachdem ich den Code etwas optimiert habe, werde ich das versuchen), aber ich sehe nicht, wie man die notwendigen Bevölkerungswachstumsraten aufrechterhalten kann und dabei das Problem zu viele Kinder je Erwachsene löst, besonders wenn man bedenkt, dass diese Erwachsenen aus vielen Jugendlichen bestehen. Menschen wachsen nur so schnell. Wurden die ägyptische, mesopotamische und chinesische Zivilisation von Hunderttausenden kleiner Kinder gegründet? Beschleunigte sich die menschliche Schwangerschaft auf weniger als 40 Wochen? Wie löst man diese scheinbare Unmöglichkeit? Ich möchte das wirklich wissen...
Übrigens, das kleine Programm, das ich geschrieben habe, ist nicht viel wert, aber ich stelle den Quellcode hier für alle bereit, die damit spielen möchten. Ich habe es in der Mittagspause zusammengeworfen, und es braucht noch viel Arbeit, um wirklich nützlich zu werden.
lodger
*** begin source code ***
// Person.java
package floodworld;
import java.util.Random;
import java.util.Vector;
public class Person {
private Random randomNumberGenerator = new Random();
private boolean isFemale;
private boolean isPregnant = false;
private int currentAge = 0;
private int weeksOfCurrentYear = 0;
private int weeksOfGestation = 0;
private int menstrualCycleWeek = 0;
private int ageOfDeath = -1;
private int weeksSinceGivingBirth = 6;
public Person () {
// 70% chance of being female
isFemale = (randomNumberGenerator.nextInt(100) < 54);
}
public Person (boolean female) {
isFemale = female;
}
public void setCurrentAge(int age) {
currentAge = age;
}
public void setAgeOfDeath(int age) {
ageOfDeath = age;
}
public void haveSex() {
if(!isFemale || (isFemale && (currentAge < 13 || currentAge > 45 || isPregnant || menstrualCycleWeek == 3))) {
return;
} else {
if(weeksSinceGivingBirth < 6) {
return;
}
// female between the ages of 13 & 45 who is not pregnant and not having their period
// 50% chance of getting pregnant
if(randomNumberGenerator.nextInt(100) < 30) {
isPregnant = true;
menstrualCycleWeek = 0;
}
}
}
public boolean isGirl() {
return (isFemale && currentAge < 13);
}
public boolean isBoy() {
return (!isFemale && currentAge < 13);
}
public boolean isWoman() {
return (isFemale && (currentAge > 13 && currentAge < 66));
}
public boolean isMan() {
return (!isFemale && (currentAge > 13 && currentAge < 66));
}
public boolean isElderly() {
return (currentAge > 65);
}
public void ageByOneWeek() {
if(isPregnant) {
weeksOfGestation++;
}
if(weeksSinceGivingBirth < 6) {
weeksSinceGivingBirth++;
}
if(isFemale && currentAge > 12 && currentAge < 45 && !isPregnant) {
if(menstrualCycleWeek < 3) {
menstrualCycleWeek++;
} else {
menstrualCycleWeek = 0;
}
}
weeksOfCurrentYear++;
if(weeksOfCurrentYear > 52) {
weeksOfCurrentYear = 0;
currentAge++;
}
}
public boolean die() {
if(ageOfDeath != -1) {
return (currentAge == ageOfDeath);
}
if(currentAge < 85) {
return (randomNumberGenerator.nextInt(1000) == 76);
}
if(currentAge > 85 && currentAge < 100) {
return (randomNumberGenerator.nextInt(700) == 45);
}
if(currentAge > 99 && currentAge < 121) {
return (randomNumberGenerator.nextInt(400) == 102);
}
if(currentAge > 120) {
return (randomNumberGenerator.nextBoolean());
} else {
return false;
}
}
public Vector giveBirth() {
Vector babies = new Vector();
if(isPregnant && weeksOfGestation > 39) {
if(randomNumberGenerator.nextInt(100) < 98) {
babies.add(new Person());
} else {
// twins
babies.add(new Person());
babies.add(new Person());
}
isPregnant = false;
weeksOfGestation = 0;
weeksSinceGivingBirth = 0;
}
return babies;
}
public boolean isFemale() {
return isFemale;
}
public int getAge() {
return currentAge;
}
public boolean isPregnant() {
return isPregnant;
}
public String stats() {
return currentAge + " year old " + (isPregnant ? "pregnant " : "") + (isFemale ? "female" : "male");
}
}
// Civilization.java
package floodworld;
import java.util.HashSet;
import java.util.Iterator;
public class Civilization {
public static void main(String[] args) {
int currentWeek = 0;
int currentYear = 1;
int currentPopulation = 8;
HashSet men = new HashSet();
HashSet women = new HashSet();
HashSet boys = new HashSet();
HashSet girls = new HashSet();
HashSet elderly = new HashSet();
HashSet deadPeople = new HashSet();
// starter population
Person noah = new Person(false);
Person noahsWife = new Person(true);
Person shem = new Person(false);
Person shemsWife = new Person(true);
Person ham = new Person(false);
Person hamsWife = new Person(true);
Person japheth = new Person(false);
Person japhethsWife = new Person(true);
noah.setCurrentAge(418);
noah.setAgeOfDeath(768);
noahsWife.setCurrentAge(100);
shem.setCurrentAge(98);
shem.setAgeOfDeath(550);
shemsWife.setCurrentAge(30);
ham.setCurrentAge(88);
ham.setAgeOfDeath(550);
hamsWife.setCurrentAge(30);
japheth.setCurrentAge(108);
japheth.setAgeOfDeath(550);
japhethsWife.setCurrentAge(30);
elderly.add(noah);
elderly.add(noahsWife);
elderly.add(shem);
elderly.add(ham);
elderly.add(japheth);
women.add(shemsWife);
women.add(hamsWife);
women.add(japhethsWife);
while(currentYear < 181) {
int births = 0;
int deaths = 0;
int pregnantWomen = 0;
// boys loop
for(Iterator boysIter = boys.iterator(); boysIter.hasNext();) {
Person boy = (Person) boysIter.next();
boy.ageByOneWeek();
if(boy.die()) {
deaths++;
deadPeople.add(boy);
continue;
}
if(boy.isMan()) {
men.add(boy);
}
}
// girls loop
for (Iterator girlsIter = girls.iterator(); girlsIter.hasNext();) {
Person girl = (Person)girlsIter.next();
girl.ageByOneWeek();
if(girl.die()) {
deaths++;
deadPeople.add(girl);
continue;
}
if(girl.isWoman()) {
women.add(girl);
}
}
// women loop
for (Iterator womenIter = women.iterator(); womenIter.hasNext();) {
Person woman = (Person)womenIter.next();
if(girls.contains(woman)) {
girls.remove(woman);
continue;
}
woman.haveSex();
woman.ageByOneWeek();
for (Iterator babiesIter = woman.giveBirth().iterator(); babiesIter.hasNext();) {
Person baby = (Person)babiesIter.next();
births++;
if(baby.isGirl()) {
girls.add(baby);
} else {
boys.add(baby);
}
}
if(woman.isPregnant()) {
pregnantWomen++;
}
if(woman.die()) {
deaths++;
deadPeople.add(woman);
continue;
}
if(woman.isElderly()) {
elderly.add(woman);
}
}
// men loop
for (Iterator menIter = men.iterator(); menIter.hasNext();) {
Person man = (Person) menIter.next();
if(boys.contains(man)) {
boys.remove(man);
continue;
}
man.ageByOneWeek();
if(man.die()) {
deaths++;
deadPeople.add(man);
continue;
}
if(man.isElderly()) {
elderly.add(man);
}
}
// elderly loop
for (Iterator elderlyIter = elderly.iterator(); elderlyIter.hasNext();) {
Person oldPerson = (Person)elderlyIter.next();
if(men.contains(oldPerson)) {
men.remove(oldPerson);
continue;
}
if(women.contains(oldPerson)) {
women.remove(oldPerson);
continue;
}
oldPerson.ageByOneWeek();
if (oldPerson.die()) {
deaths++;
deadPeople.add(oldPerson);
continue;
}
}
// bring out the dead
for (Iterator deadIter = deadPeople.iterator(); deadIter.hasNext();) {
Person deadPerson = (Person)deadIter.next();
boys.remove(deadPerson);
girls.remove(deadPerson);
men.remove(deadPerson);
women.remove(deadPerson);
elderly.remove(deadPerson);
}
// tally
currentWeek++;
if(currentWeek == 53) {
currentYear++;
currentWeek = 0;
System.out.println(currentYear);
}
if(currentYear >= 180) {
System.out.println("Year " + currentYear + "/Week " + currentWeek + ": Boys (under 12): " + boys.size() + " / Girls (under 12): " + girls.size() + " / Men (13-65): " + men.size() + " / Women (13-65): " + women.size() + " / Elderly (66+): " + elderly.size());
System.out.println("Births: " + births);
System.out.println("Deaths: " + deaths);
System.out.println("Pregnant Women: " + pregnantWomen);
int totalPopulation = (boys.size() + girls.size() + men.size() + women.size() + elderly.size());
int totalChildren = (boys.size() + girls.size());
int totalAdults = (men.size() + women.size() + elderly.size());
System.out.println("Total Population: " + totalPopulation + " / " + totalChildren + " children, " + totalAdults + " adults");
}
}
}
}
[Erratum: In diesem Code gibt es einen kleinen Fehler – er simuliert ein 53-Wochen-Jahr statt eines 52-Wochen-Jahres, da die Variable „weeksOfCurrentYear“ zurückgesetzt wird, wenn ihr Wert 52 erreicht, sie aber bei 0 statt bei 1 beginnt. Dies hat keinen wesentlichen Einfluss auf die in dem Beitrag gezogenen Schlussfolgerungen, da ein längeres Jahr tatsächlich zu Gunsten der Creationisten wirkt (weil es mehr Zeit für Reproduktion bedeuten würde); diese Korrektur ist jedoch der Genauigkeit halber enthalten.]
[Zurück zu den Beiträgen des Monats 2004]