gewichtete Zufallszahlen

OP #3445423
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
Gast #3445426
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.!
Gast #3445448
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
Gast #3445451
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!
Gast #3445459
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.
OP #3445485
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
Gast #3445820
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
Gast #3446037
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 ;-)
OP #3447091
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
OP #3447136
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
Gast #3447316
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren