Ankündigung

Einklappen
Keine Ankündigung bisher.

Vokabeltrainer

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Wenn das ganze reiner Zufall ist (hab nicht alles angesehen), dann einfach mehr Vokabeln eingeben...
    Wenn es kein Zufall ist sondern iwie anders funktioniert, deinen Code anpassen.

    Code:
    $_SESSION['zufall'] = rand(0,4);

    Hast das entsprechend angepasst ?

    Code:
    $_SESSION['zufall'] = rand(0, $vokabel_anzahl - 1);
    Wäre eigentlich geeigneter...
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #17
      ja es ist reiner Zufall.
      Gibt es aber keine andere Möglichkeit als die Vokabelanzahl zu erhöhen. Es soll nämlich ein Lektionvoktrainer werden(ca. 20 voks pro lektion). Und wenn ich die Vokanzahl erhöhe würde es mir auch nicht garantieren, dass alle Vokabeln abgefragt werden.

      Danke für die Hilfe

      Verci

      Kommentar


      • #18
        Zufall ist halt nunmal zufällig...


        Was du machen könntest wäre den Zufall zu gewichten, z.B.:
        Du hast deine Vok-Liste, jede Vokabel hat die gleiche Chance drannzukommen.
        Wenn eine Vokabel drann war und richtig ist sinkt die Chance dass sie nochmal drannkommt, wenn sie falsch war steigt die Chance, aber wird für die nächste Abfrage blockiert (keine Vok soll zweimal hintereinander drannkommen).
        Dann hättest du eine gewichtung drinn, die (meiner Meinung nach) sinnvoll wäre.

        Grüße
        Signatur:
        PHP-Code:
        $s '0048656c6c6f20576f726c64';
        while(
        $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

        Kommentar


        • #19
          Das klingt ja genial. Nur fällt mir jetzt nicht ein wie ich eine solche Gewichtung umsetzten kann. Kannst du mir einen Link oder Tipp geben?

          Kommentar


          • #20
            http://www.php-einfach.de/codeschnipsel_6560.php

            Google: gewichteter Zufall [php]
            Signatur:
            PHP-Code:
            $s '0048656c6c6f20576f726c64';
            while(
            $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

            Kommentar


            • #21
              Hi,

              was ich hier mache ich folgendes (ohne es getestet zu haben):

              Ich schaue am Anfang, ob eine Zufallszahl gesetzt wurdedas Array deutsch existiert bzw. und die Größe von deutsch 0 ist. Dann ist nämlich entweder der Vokabeltrainer am Ende oder wurde erst eben gestartet. Also wird daraufhin dann das Array mit den Vokabeln angelegt.

              Weiter unten, wenn die Antwort richtig war, "lösche" ich die richtige Vokabel aus dem Array, indem ich die Arrays zuerst in ein temporäres Array kopiere und, wenn der Index im Array erreicht ist, der der Zufallszahl entspricht, überspringe ich das Umkopieren -> die gerade beantwortete Vokabel ist nicht mehr in dem temporären Array. Nun setze ich deutsch und spanisch auf null und kopiere dann die temporären Arrays da rein.

              Da sich nun natürlich die Größe des Arrays nach jeder richtigen Beantwortung ändert muss auch die Zufallszahlenerstellung dynamisch gemacht werden, weshalb ich statt rand(0, 4) rand(0, sizeof($deutsch)) nehme.

              PHP-Code:
              <?php
              session_start
              ();

              // Wenn noch keine Zufallszahl gesetzt wurde innerhalb der Session, dann initialisierst du das Array mit den Sprachen.
              if(!isset($_SESSION['zufall']) && sizeof($deutsch) == 0) {
              //DEutsche Vokabeln//
              $deutsch = array(
              "spielen",
              "gehen",
              "machen",
              "bestellen",
              "dienen",
              );
               
              //Spanische Vokabeln//
              $spanisch = array(
              "jugar",
              "ir",
              "hacer",
              "pedir",
              "servir",
              );

              echo 
              '<b>Der Vokabeltrainer startet nun!</b>';
              //Vokabelanzahl//
              }
              ?>
               <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head>
              <title></title>
              <meta name="author" content="Hannes">
              <meta name="editor" content="html-editor phase 5">
              </head>
              <body text="#000000" bgcolor="orange" link="navy" alink="navy" vlink="navy">




              <font size="+6" color="navy">Vokabeltrainer 1.0.0
              </font>    <p> <p><p><p><p>
              <font size="+2" color="navy">Deutsch-Spanisch
              <form method="post">
               <input type="text" name="spanisch">
               <input type="submit" value="OK"> </form>
              </font>  <p><p><p><p>
              <?php

              // Php Code
              error_reporting(E_ALL E_STRICT);
              // Wert für SPanisch wird angegeben//

               //WERT wird überprüft//
              if (!isset($_POST['spanisch'])) {
                echo 
              "Kein gültiger Wert angegeben";

                
              $spa '';
              }
              else {
                
              $spa $_POST['spanisch'];
              }
               
              //Zufallszahl//


              $vokabel_anzahl count($deutsch);

              // ES wird die ZUFALLSTE Vokabel aus dem Array Ausgelesen    //


              // Hier das Selbe//






               //Überprüfung//
               
              if($spanisch[$_SESSION['zufall']] == $spa) {
                 
              $newArrayDeutsch = array();
                 
              $newArraySpanisch = array();

                 for(
              $i 0$i sizeof($deutsch) -1$i++) {
                   if(
              $i != $_SESSION['zufall']) {
                     
              $newArrayDeutsch[] = $deutsch[$i];
                     
              $newArraySpanisch[] = $spanisch[$i];
                   }
                 }
                 
              $deutsch null;
                 
              $spanisch null;

                 
              $deutsch newArrayDeutsch;
                 
              $spanisch newArraySpanisch;

                 echo 
              "Richtig";
               } else {
                echo 
              "Falsch";
               }

              $_SESSION['zufall'] = rand(0sizeof($deutsch));
              ?>
              <font color="red">
              <p></p>
               <php
                 echo $spanisch[$_SESSION['zufall']];


                  ?>      </font>
                  <p></p>
                <font color="white">
                <?php
                  
              echo $deutsch[$_SESSION['zufall']];
                  
              ?>
                  </font>



                 <p>
                  <p>
                 Der Vokabeltrainer besitzt momentan<strong> <?php  echo $vokabel_anzahl?></strong> Vokabeln.
              </body>
              </html>

              Durch diese Lösung fallen dann jeweils die korrekten Variablen raus (so kenne ich es auch aus meinem Vokabeltrainer, den ich zu Schulzeiten hatte. Wenn du durch bist kannst du ja neu starten bzw. wird automatisch neu gestartet und du entscheidest, ob du weitermachst oder das Teil schließt.

              Viele Grüße,

              Dirk

              PS: Finde es eine coole Idee das Ganze zu kombinieren. Habt ihr eine Internetseite eurer Schule? Wenn ja, dann schlage euren Lehrern doch mal vor, das dort online zu stellen. Das Ganze kann man dann ja noch mit DB-Anbindung machen, so können dann auch deine Mitschüler was lernen (und wenn das dein(e) Spanischlehrer(in) mitbekommt ist es sicher auch nicht schlecht für die Note ).

              Kommentar


              • #22
                Weiter unten, wenn die Antwort richtig war, "lösche" ich die richtige Vokabel aus dem Array, indem ich die Arrays zuerst in ein temporäres Array kopiere
                Das ist auch der einzig richtige Weg. Mit Gewichtung hat das Problem überhaupt nichts zu tun. Denn so gesehen brauchst DU eine Gewichtung von 0%.
                Was du machen könntest wäre den Zufall zu gewichten, z.B.:
                Du hast deine Vok-Liste, jede Vokabel hat die gleiche Chance drannzukommen.
                Wenn eine Vokabel drann war und richtig ist sinkt die Chance dass sie nochmal drannkommt, wenn sie falsch war steigt die Chance, aber wird für die nächste Abfrage blockiert (keine Vok soll zweimal hintereinander drannkommen).
                Dann hättest du eine gewichtung drinn, die (meiner Meinung nach) sinnvoll wäre.
                Allerdings ist das hier sehr umständlich:
                und, wenn der Index im Array erreicht ist, der der Zufallszahl entspricht, überspringe ich das Umkopieren -> die gerade beantwortete Vokabel ist nicht mehr in dem temporären Array. Nun setze ich deutsch und spanisch auf null und kopiere dann die temporären Arrays da rein.
                Einfacher ist es, einfach alle Vokabeln temprär zu kopieren und die Menge zu „shuffeln“. Dann von oben nach unten abarbeiten.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #23
                  Hallo nikosch,

                  bitte richtig zitieren - du wirst da meine Beiträge mit denen von ByStones...

                  Zitat von nikosch Beitrag anzeigen
                  Allerdings ist das hier sehr umständlich:Einfacher ist es, einfach alle Vokabeln temprär zu kopieren und die Menge zu „shuffeln“. Dann von oben nach unten abarbeiten.
                  Hmm, meiner Meinung nach geht das nicht, in der Art, wie es aktuell aufgebaut ist. Wenn, dann ginge das nur im Mehrdimensionalen Array, oder wenn er als Index von $spanisch die dt. Übersetzung verwendet.

                  Du musst ja sowohl $spanisch, als auch $deutsch immer "parallel" halten. Also müssten "spielen" und "jugar" immer den gleichen Index haben.

                  Außerdem wird es dann doof, wenn du einmal shuffle() ausführst, das in der Session speicherst und nur die "zufall"-Variable in der Session erhöhst, wenn was richtig war (womit du ja quasi das Löschen umgehen würdest). Das Problem kommt dann, wenn eine Antwort falsch war, dann würde "zufall" nämlich gleich bleiben und du würdest immer dieselbe Vokabel abfragen und das ist ja nicht wirklich sinnvoll.

                  Gerne lasse ich es mir aber nochmal erklären, falls du dir die Zeit nehmen willst. Würde mich nämlich auch interessieren.

                  Viele Grüße,

                  Dirk

                  Kommentar


                  • #24
                    Sauberer wäre eine direkte Zuordnung im Array:
                    PHP-Code:
                    $deutsch = array(
                    "spielen",
                    "gehen",
                    "machen",
                    "bestellen",
                    "dienen",
                    );
                     
                    //Spanische Vokabeln//
                    $spanisch = array(
                    "jugar",
                    "ir",
                    "hacer",
                    "pedir",
                    "servir",
                    ); 

                    // assoz. Array basteln
                    // Schlüssel: Deutsches Wort
                    // Wert: spanisches Wort
                    $german2spain array_combine($deutsch$spanisch);
                    // und umgekehrt (spanisch -> deutsch)
                    $spain2german array_combine($spanisch$detusch);

                    // zufälligen Eintrag (deutsches Wort)
                    $germanKey array_rand($german2spain);
                    // $german2spain[$germanKey] -> spanische Übersetzung 
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #25
                      bitte richtig zitieren - du wirst da meine Beiträge mit denen von ByStones...
                      nö. Ich habe geschrieben „Gewichtung“ ist Quark, weil man mit einer Gewichtung Sachen nicht ausschließen kann („dass nicht andauernd die selben vokabeln abgefragt werden“).
                      Dann habe ich Dir grundsätzlich recht gegeben, mit der Einschränkung, dass das Verfahren umständlich erscheint.

                      Du musst ja sowohl $spanisch, als auch $deutsch immer "parallel" halten. Also müssten "spielen" und "jugar" immer den gleichen Index haben.
                      Dann shuffelt man eben ein zusätzliches Index-Array.
                      Das Problem kommt dann, wenn eine Antwort falsch war, dann würde "zufall" nämlich gleich bleiben und du würdest immer dieselbe Vokabel abfragen und das ist ja nicht wirklich sinnvoll.
                      Kommt halt drauf an, wie der Trainer funktionieren soll. Ein typisches Verhalten wäre:
                      Trainer geht alle Wörter durch, bis alle mal richtig gelöst wurden. Erreichen kann man dies, indem man wie oben gesagt ein Index-Array erzeugt und Sessionseitig speichert und zusätzlich einen Zugriffsschlüssel verwaltet. Richtig geratene Wörter kann man einfach aus dem Index-Array löschen. Entspricht der Zugriffschlüssel dem letzten Schlüssel des Index-Arrays, setzt man ihn auf den ersten noch vorhandenen zurück.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar

                      Lädt...
                      X