Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

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.

  1. Wie viele Kamele sind es voraussichtlich im Jahr 2041?
  2. Wie lange dauert es nach Ihrem Programm, bis wieder eine natürliche Population von nicht mehr als 2000 Exemplaren vorhanden sein wird?

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

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

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: Leicht
Webcode: jsqi-792x
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen