Forum: Mikrocontroller und Digitale Elektronik gewichtete Zufallszahlen


von Anselm 6. (anselm68)


Lesenswert?

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

von Marcel (Gast)


Lesenswert?

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.!

von Gerald G. (Gast)


Lesenswert?

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

von Mick (Gast)


Lesenswert?

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!

von Hans (Gast)


Lesenswert?

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.

von Anselm 6. (anselm68)


Lesenswert?

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

von Anselm 6. (anselm68)


Lesenswert?

Hardware ist schon fertig, nun kommt die weiche Ware.
Anzeige via 3x16 DOGM-Display und ein paar Taster.

Anselm

von Mick (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Steffen (Gast)


Lesenswert?

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 ;-)

von Anselm 6. (anselm68)


Lesenswert?

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

von Anselm 6. (anselm68)


Lesenswert?

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

von rava (Gast)


Lesenswert?

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.

von Anselm 6. (anselm68)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.