Neuweltkamele (Simulationen)
In einer südamerikanischen Steppe wurden alle natürlichen Feinde der Neuweltkamele ausgerottet.
Im Jahre 2040 zählte man einen Bestand von bereits 4500 Kamelen. Es ist zwar die Anzahl aller Kamele bekannt, jedoch nicht, um wie viele Männchen bzw. Weibchen es sich handelt. Jedes Jahr nimmt der Bestand um geschätzte 4.8 % der Anzahl Weibchen zu; dabei kommen etwa gleich viele (simulieren Sie 50%) Kamelmädchen wie Kameljungs zur Welt.
Voraussetzung: Füllen Sie zwei Variable (anzahlWeiblich, anzahlMaennlich) so ab, dass erstens die Werte zufällig sind und zweitens die Summe der Variablen die erwähnten 4500 Individuen ergibt.
Die Jäger werden angehalten, jedes Jahr 200 Tiere zu schießen, um eine Überpopulation zu verhindern. Leider ist es den Jägern nicht möglich, vor dem Abschuss jeweils zu sehen, ob es sich um ein männliches oder um ein weibliches Kamel handelt. Schreiben Sie eine weitere Methode, die 200 Tiere "abschießt", mit zufälliger Wahl von Männchen und Weibchen.
- Wie viele Kamele sind es voraussichtlich im Jahr 2041?
- Wie lange dauert es nach Ihrem Programm, bis wieder eine natürliche Population von nicht mehr als 2000 Exemplaren vorhanden sein wird?
0 Kommentare
2 Lösung(en)
public class Neuweltkamele {
public static void main(String[] args) {
new Neuweltkamele().top();}
int jahr = 2040; // januar
int anzahlWeiblich;
int anzahlMaennlich;
void top() {
initMaennchenWeibchen(4500);
while(totalPopulation() > 2000) {
simuliereZuwachs(4.8);
simuliereAbschussUndTodesfaelle(200);
jahr = jahr + 1;
ausgabe();
}
}
void simuliereAbschussUndTodesfaelle(int tote) {
int i = 1;
while(i <= tote) {
if(Math.random() < 0.5 && anzahlMaennlich > 0) {
anzahlMaennlich = anzahlMaennlich - 1;
} else {
if(anzahlWeiblich > 0) {
anzahlWeiblich = anzahlWeiblich - 1;
}
}
i = i + 1;
}
}
void simuliereZuwachs(double prozent) {
int neuPop = (int) Math.round(prozent * anzahlWeiblich / 100);
simuliereZuwachs(neuPop); }
void simuliereZuwachs(int geburten) {
int i = 1;
while(i <= geburten) {
if(Math.random() < 0.5) {
anzahlWeiblich = anzahlWeiblich + 1; }
else {
anzahlMaennlich = anzahlMaennlich + 1; }
i = i + 1;
}
}
void ausgabe() {
System.out.println("Jahr: " + jahr);
System.out.println(" Weibchen: " + anzahlWeiblich);
System.out.println(" Männchen: " + anzahlMaennlich);
System.out.println(" Total : " + totalPopulation());
System.out.println(); }
int totalPopulation() {
return anzahlWeiblich + anzahlMaennlich; }
void initMaennchenWeibchen(int totalPopulation) {
anzahlWeiblich = 0;
anzahlMaennlich = 0;
simuliereZuwachs(totalPopulation); }
} // end of class Neuweltkamele
// population
let pop = {
year: 0,
females: 0,
males: 0,
total: function() {
return this.females + this.males;
},
init: function() {
this.year = 2040;
this.females = Math.round(Math.random() * 4500);
this.males = 4500 - this.females;
},
births: function() {
let brood = Math.round((0.048 * this.females) / 2);
this.females += brood;
this.males += brood;
},
shots: function() {
let kills = Math.round(Math.random() * 200);
this.females -= kills;
this.males -= (200 - kills);
},
passYear: function() {
this.year++;
this.births();
this.shots();
}
}
/*---------------------------------------------------------------
| @ Wie viele Kamele sind es voraussichtlich im Jahr 2041?
\*--------------------------------------------------------------*/
// ich nehme hier einen mittelwert von 1000 fällen
let records = 0, i;
for (i = 0; i < 1000; i++) {
pop.init();
pop.passYear();
records += pop.total();
}
document.write(`<p>Im Jahr 2041 sind es durchschnittlich
<b> ~${Math.round(records / 1000)}</b> Kamele.</p>`);
/*---------------------------------------------------------------
| @ Wie lange dauert es nach Ihrem Programm, bis wieder eine
| natürliche Population von nicht mehr als 2000 Exemplaren
| vorhanden sein wird?
\*--------------------------------------------------------------*/
pop.init();
while (pop.total() > 2000) pop.passYear();
document.write(`<p>Die Population sank im Jahr <b>${pop.year}</b> auf
unter 2000 Kamele.</p>`); // lissalanda@gmx.at
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
Verifikation/Checksumme:
a) Im Jahr 2041 sind es voraussichtlich 4406 bis 4409 Kamele.
b) Es dauert etwa 22 Jahre, bis die natürliche Population wiederhergestellt ist. Dies wird somit etwa im Jahr 2061 oder 2062 der Fall sein.
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 1 |
Schwierigkeit: | Leicht |
Webcode: | jsqi-792x |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |