Einzelnen Beitrag anzeigen

guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#1

Denkanstoß: Brauche gewichtete "Zufallszahlen"

  Alt 22. Nov 2007, 06:31
Datenbank: NexusDB • Zugriff über: NexusDB
Hm, ich brauche mal einen kleinen Denkanstoß für einen Vokabeltrainer.

Problem:

-Vokablen sollen aus einer DB zufällig abgefragt werden.
-Es soll für jede Vokabel einen "Übungslevel" geben.
-Wird eine Vokabel richtig übersetzt dann steigt der Übungslevel
-Wird eine Vokabel falsch übersetzt dann fällt der Übungslevel
-Vokabeln mit niedrigem Übungslevel werden öfter abgefragt
-Vokabeln mit hohem Übungslevel werden seltener abgefragt

Also so eine Art "Lernen mit Karteikasten".

Gesucht ist nun eine elegante Methode dies softwaretechnisch umzusetzen.

-Ich möchte idealerweise bei richtiger oder falscher Antwort einfach etwas addieren oder subtrahieren müssen (innerhalb einer Bereiches natürlich)
-Ich möchte per SQL-Abfrage (darum in der Spalte Datenbank) eine zufällig bestimmte Vokabel mit der richtigen Häufigkeit abrufen können (möglichst simpel).

Die Tabelle stelle ich mir ungefähr so vor:

USER INT //für eine Benutzer-ID, da für mehrere Benutzer mit eigenen Vokabeln
LANG INT //für eine Sprach-Kennung, da für mehrere Sprachen offen
NATIVE VARCHAR //das Wort in der Muttersprache
FOREIGN VARCHAR //das Wort in der Fremdsprache
LEVEL INT //der Übungslevel
LAST DATE //Datum der letzten Abfrage

Für die gewichtete Zufallszahl dachte ich mir einen Bereich festzulegen, z.B. 1-14

1-5 = Level 1
5-8 = Level 2
9-11 = Level 3
12-13 = Level 4
14 = Level 5

Damit sollte ich Vokabeln im Level 1 öfter zufällig ausgewählt bekommen, als eine Vokabel im Level 5.

Ich kann dann zwar bei richtiger Antwort einfach addieren, bis 14 erreicht ist, wenn ich aber diesen Wert in der DB speichere, dann müsste ich bei der SQL-Abfrage für eine Vokabel im Level 1 beispielsweise schreiben WHERE LEVEL=1 OR LEVEL=2 OR LEVEL=3 OR LEVEL=4 OR LEVEL=5. Finde ich jetzt nicht elegant. Das geht bestimmt besser.

Hat jemand eine Idee?

Gruß,
Guido
  Mit Zitat antworten Zitat