faecher:informatik:oberstufe:machine_learning:mljs:markow:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:machine_learning:mljs:markow:start [19.02.2025 20:36] Frank Schiebelfaecher:informatik:oberstufe:machine_learning:mljs:markow:start [19.02.2025 20:52] (aktuell) – [Die wichtigsten Bestandteile:] Frank Schiebel
Zeile 181: Zeile 181:
  
 <code java> <code java>
-    /** +/** 
-     *   Erzeuge Text +*   Erzeuge Text 
-     */    +*/    
-    public String erzeugeText(String anfang, int laenge) {+public String erzeugeText(String anfang, int laenge) {
  
-        String aktuellerZustand = anfang; +  String aktuellerZustand = anfang; 
-        StringBuilder resultat = new StringBuilder(anfang);+  StringBuilder resultat = new StringBuilder(anfang);
  
-        for (int i = 0; i < laenge; i++) { +  for (int i = 0; i < laenge; i++) { 
-            char naechstesZeichen = zufaelligerUebergang(aktuellerZustand); +      char naechstesZeichen = zufaelligerUebergang(aktuellerZustand); 
-            aktuellerZustand = aktuellerZustand.substring(1) + naechstesZeichen; +      aktuellerZustand = aktuellerZustand.substring(1) + naechstesZeichen; 
-            resultat.append(naechstesZeichen); +      resultat.append(naechstesZeichen); 
-        +  
-        return resultat.toString().replaceAll("N","\n");  +  return resultat.toString().replaceAll("N","\n");  
-    }+}
  
-    /** +/** 
-     * Wählt ein zufälliges Folgezeichen. Die Häufigkeit der Zeichen wird  +* Wählt ein zufälliges Folgezeichen. Die Häufigkeit der Zeichen wird  
-     * nicht berücksichtigt.  +* nicht berücksichtigt.  
-     */ +*/ 
-    char zufaelligerUebergang(String aktuellerZustand) { +char zufaelligerUebergang(String aktuellerZustand) { 
-        Map<Character, Integer> folgeZeichen = uebergaenge.get(aktuellerZustand);+  Map<Character, Integer> folgeZeichen = uebergaenge.get(aktuellerZustand);
  
-        if(folgeZeichen != null) { +  if(folgeZeichen != null) { 
-            Random generator = new Random(); +      // Zufalsgenerator initialisieren 
-            Object[] alleZeichen = folgeZeichen.keySet().toArray(); +      Random generator = new Random(); 
-            return (char) alleZeichen[generator.nextInt(alleZeichen.length)]; +      // Die Keys der HashMap in ein Array umwandeln. Diese Methode  
-        } else { +      // funktioniert nur, wenn alleZeichen eine Array vom Typ  
-            return ' '; +      // Object ist.  
-        +      Object[] alleZeichen = folgeZeichen.keySet().toArray(); 
-    }+      // mit generator.nextInt(alleZeichen.length) wird eine Zufallszahl erzeugt 
 +      // die über den Index ein zufälliges Element auswählt.  
 +      // Bevor das Element zurückgegen werden kann, muss es nach char  
 +      // gecastet werden. 
 +      return (char) alleZeichen[generator.nextInt(alleZeichen.length)]; 
 +  } else { 
 +      return ' '; 
 +  
 +}
 </code> </code>
  
Zeile 217: Zeile 225:
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A4) ===  === (A4) === 
 +
 +Vollziehe nach wie das Erzeugen von Texten abläuft.
 +
 +  * Erstelle eine Methode ''public char gewichteterUebergang(String aktuellerZustand)'', der bei der Auswahl des nächsten Zeichens die Häufigkeiten der Zeichen berücksichtigt
 +  * Für Fortgeschrittene: Dupliziere den Markow-Texter in ein neues BlueJ-Projekt und passe dieses so an, dass er Wörter lernt anstatt Zeichen, so dass das jeweils nächste Wort anhand der vorhergehenden Worte bestimmt wird. 
  • faecher/informatik/oberstufe/machine_learning/mljs/markow/start.1739997389.txt.gz
  • Zuletzt geändert: 19.02.2025 20:36
  • von Frank Schiebel