Hallo, ich bin gerade am bauen eines Weihnachtsgeschenkes für meine Tochter. Sie wünscht sich einen "Zufallsgenerator" für Pausenbrote ;) In Bascom ist sowas ganz schnell geschrieben, aber nun kommt die Maus: Die Menuezusammestellung kann mit gut/schlecht bewertet werden. Diese Information wird im EEPROM abgespeichert und soll später das zufällig erzeugte Menue beeinflussen können. Wie könnte ich den "Zufall" etwas weniger zufällig machen? Gruß Anselm
Indem du Ihn einfach selbst gewichtest. Lasse den Zufallszahl im Bereich von 0...100 erzeugen. Nun kannst du hingehen und die Menüausgabe in Abhängigkeit einer Prozentzahl zu setzen. (Z.B. Fragst du auf kleiner, gleich 20 ab! Wenn der Fall erfüllt ist, gibt es ein Mettbröttchen). Bei größer 20 und kleiner, gleich 70 gibt es Sadellen, etc. pp.!
Oder bei sagen wir 8 Gerichten, wird jedes 10 mal in den Topf gelegt. Es werden so lange Zufallszahlen erzeugt, bis eine zwischen 0 und 79 erzeugt wird. 0-9 is Gericht 1, 10-19 Gericht 2 usw. Wird danach der "gut-knopf" gedrückt, wird dieses Gericht einmal mehr hinein gelegt. Es müssen also Zufallszahlen zw. 0 und 80 erzeugt werden. Wurde Gericht 2 positiv gewertet, ist also bei 0-9 wieder Gericht 1, und aber von 10-20 Gericht 2. Bei einem negativen Knopf wird entsprechend 1 abgezogen. Allerdings würde ich verbieten, weniger als 1 mal ein Gericht in den Topf zu legen
Sehr gute Idee!! Für den Zufallsgenerator werden noch folgende Informationen benötigt: - Werden die Zutaten einzeln bewertet? Oder nur das fertige Pausenbrot? - Wieviele Zutaten gibt es und wieviele werden in einem Pausenbrot verwendet? Interessant wäre auch noch die effektive Anwendung: - Wie werden die Zutaten angezeigt? - Wie wird die Bewertung eingegeben? Super Projekt und meine Unterstützung garantiert!
Du könntest z.B. eine Zufallszahl generieren, die zwischen 1 und der Summe aller Bewertungen liegt. Danach durchläufst Du das Array mit den Zusammenstellungen und zieht bei jedem Eintrag die Bewertung dieses Eintrags von der Zufallszahl ab. Der Eintrag, bei dem die Zufallszahl auf kleinergleich 0 sinkt, wird ausgewählt. Damit ist die Wahrscheinlichkeit für einen Eintrag gewählt zu werden proportional zur Bewertung.
Ich habe beide Möglichkeiten programmtechnisch vorgesehen. Das bewerten einzelner Positionen so wie der daraus resultierenden Menues. Das Speicherarray ist 3-dimensional also Menue(9)(9)(9)<- 9 Möglichkeiten pro Position = (9^3 -90) Speicherplätze (Byte). die einzelnen Teile (wie zb. Brotsorten) werden in einer 2^16 großen Variable gespeichert, da diese ja sehr oft vorkommen kann. Anselm
Hardware ist schon fertig, nun kommt die weiche Ware. Anzeige via 3x16 DOGM-Display und ein paar Taster. Anselm
Guten Morgen Ich würde das so lösen: - Menüs und Positionen erhalten eine Bewertung von 1 - 5 (beginnend bei 1 und bei positiver Bewertung um eins erhöhen) - Die erste Zufallszahl x generieren (zwischen 1 - 5) - Ist x grösser als die höchste Bewertung, dann x = höchste Bewertung - Im Array Positionen durch eine weitere Zufallszahl anspringen - Ist die Bewertung der Position GRÖSSER GLEICH x, dann diese auswählen
Im Interesse deiner Tochter würde ich allerdings die Null ausschliessen, damit sie auf jeden Fall was zu Essen mit in die Schule nehmen kann :-) Ansonsten, ein sehr nettes Projekt.
Anselm 68 schrieb: > ich bin gerade am bauen eines Weihnachtsgeschenkes für meine Tochter. > Sie wünscht sich einen "Zufallsgenerator" für Pausenbrote ;) > In Bascom ist sowas ganz schnell geschrieben, aber nun kommt die Maus: > Die Menuezusammestellung kann mit gut/schlecht bewertet werden. > Diese Information wird im EEPROM abgespeichert und soll später das > zufällig erzeugte Menue beeinflussen können. ich würde das noch mit dem Kühlschrank verbinden, nicht das es ein Menü gibt bei dem die Zutaten fehlen ;-)
Lösung 1: (Hans) Ich lese alle Menuebewertungen ein und summiere die Anzal der positiven Bewertungen. (Standart = 1) Nun hole ich eine Zufallszahl die der Summe aller Bewertungen entspricht. Jetzt addiere ich alle Bewertungen bis die Summe >= der aktuellen Position ist. Das hat den Nachteil dass ein Menue mit der Ordnungsnummer 100 und einer Bewertung von +100 bei einer Zufallszahl von 300 niemals favorisiert wird. Hier würde die Nummer 200 ausgewählt werden, obwohl sie den Faktor 1 hat. Das System von Mick habe ich nicht ganz verstanden. Anselm
Okay, Denkfehler ist gefunden, denn dieses Menue ist für 100 Zahlen der Sieger.. Also ist das Menue schon ausreichend ausgewählt. Nun noch die Frage, kann ich die Wertigkeit einzelner Teile mit einfliessen lassen? Nehme ich an ich habe ein Pausenbrot welches aus den Komponenten (1)(3)(7) besteht. Die Einzelpositionen haben einen Beliebtheitswert von (1(22)) (3(16)) (1(1)) Kann ich die Information dass zB.:Gurken besonders gerne gegessen werden in die Gesamtauswahl mit einbringen? Anselm
naja du musst dich entscheiden, ob du die zutaten oder das gericht bewertest. Wenn es beides sein soll, musst du die verschiedenen Bewertungen gewichten. Bei den Zutaten besteht übrigens die Gefahr, dass Rezepte mit VIELEN zutaten wie etwa das berühmte salami-käse-gurken-apfel-nutella-zwiebel-ketchup-sandwich ein größeres Gewicht bekommen und damit wahrscheinlicher werden. Grundsätzlich möchtest du von einer Verteilung sampeln. Das macht man mit einer Methode, die oft "wheel of fortune" heißt: Du normierst die Gewichte so, dass ihre summe konstant ist (z.B. 360° auf dem Glückrad) und erzeugst eine Zufallszahl in der Range 0-maximum. Nun musst du nur noch herausfinden, welche Region auf dem Glücksrad unter deiner Zufallszahl liegt.
Hier nun das erfolgreich eingeführte Weihnachtsgeschenk ;) Etwas zeitraubend war es noch den Zufallsgenerator auch zufällig zu bekommen. Anselm p.S.: Mein Handy kann Orange absolut nicht fotografieren. In echt siehts besser aus ;)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.