Discuss Scratch
- TM_
-
1000+ posts
gewichtete Zufallszahlen
@TM_: Dein Vorschlag könnte man zu einer universellen Lösung weiter entwickeln und eine Werteliste erstellen. Man würfelt dann nur den Listenindex und kann so jede beliebige Verteilungsfunktion erstellen.
Stimmt, mit einer Liste ist es noch kompakter aber auch besser

Man könnte dazu einen Wiki-Artikel schreiben, oder?

Last edited by TM_ (May 26, 2014 12:01:09)
- Lirex
-
500+ posts
gewichtete Zufallszahlen
+1 Man könnte dazu einen Wiki-Artikel schreiben, oder?

- koDoz
-
42 posts
gewichtete Zufallszahlen
Ich hab noch was gefundenIs eigentlich ziemlich interressant das thema
…
Natürlich findet sich schon vieles in Scratch
Eine Anwendung mit der Gausschen Verteilung gibt es hier: http://scratch.mit.edu/projects/19733411/
(: damit die Herrschaften besser schlafen können

Im Prinzip errechnet sich die einfache symmetrischer Glockenkurve, also mit Mittenbetonung als:
Die ‘schräge Glockenkurve’ findet sich im Projekt: Poisson Random Numbers (Poisson Distribution) http://scratch.mit.edu/projects/20496965/
Last edited by koDoz (May 27, 2014 10:08:12)
- koDoz
-
42 posts
gewichtete Zufallszahlen
+1 Man könnte dazu einen Wiki-Artikel schreiben, oder?



(Mathematisch korrekt, aber ohne mathephobe Scratch-Praktiker gleich in die Flucht zu schlagen)

Last edited by koDoz (May 27, 2014 10:17:19)
- TM_
-
1000+ posts
gewichtete Zufallszahlen
Habe schon mal die Überschrift hier reingehauen, aber wie sollten wir das am Besten strukturieren?
http://scratch-dach.info/wiki/Zufallszahl_von_%28%29_bis_%28%29_%28Block%29

http://scratch-dach.info/wiki/Zufallszahl_von_%28%29_bis_%28%29_%28Block%29
- koDoz
-
42 posts
gewichtete Zufallszahlen
Habe schon mal die Überschrift hier reingehauen, aber wie sollten wir das am Besten strukturieren?![]()
http://scratch-dach.info/wiki/Zufallszahl_von_%28%29_bis_%28%29_%28Block%29
Super, der Einstieg ist ja schon gemacht!
Vorschlag für die weitere Struktur: (von einfach/pragmatisch bis komplexer)
Gewichtete Zufallszahlen
+ Symmetrische Verteilung von Zufallszahlen
++ Berg-artige Verteilung
++ Tal-artige Verteilung
+ ‘schräge’ Verteilung
++ Links-lastige Verteilung
++ Rechts-lastige Verteilung
+ beliebige Verteilungen
++ Tabellengestützte Verteilungsfunktion
++ parametrisierbare Verteilungsfunktion
Random Hardcore (vielleicht)
+ Was sind ‘gute’ Verteilungsfunktionen?
++ Qualitätstest - Glaub keiner Random-Funktion!
+++ Die Modulo-Falle
++ Eigener Randomgenerator (mit Seed)
+++ Vorteil: reproduzierbare Folgen zu Testzwecken
+ AI: ‘lernender’ Pseudo-Zufallsgenerator
++ Stein Schere Papier
…
Last edited by koDoz (June 3, 2014 06:26:22)
- TM_
-
1000+ posts
gewichtete Zufallszahlen
Okay, ich werd sehen was ich machen kann. Aber natürlich können alle anderen mit Wiki-Account mitmachen und wer noch keinen hat, kann sich ja jetzt einen zulegen, denn zu diesem Thema kann man ja noch sehr viel hinzufügen. Ich denke da noch an spezielle Zufallsysteme wie sie bei Seeds benutzt werden (Minecraft ist hier das beste Beispiel). Dabei ist ein Seed, den man selber eingibt, oder er sich aus Werten wie aktuelle Uhrzeit ergibt, die Grundlage für alle Zufallsereignisse. Sie scheinen zwar zufällig aufzutreten, aber mit dem gleichen Seed kann man alle Zufallsereignisse exakt reproduzieren.
- koDoz
-
42 posts
gewichtete Zufallszahlen

Hier nun mein Beitrag für das nächste Kapitel im DACH-Wiki Thema: Zufallszahl
Gewichtete Zufallszahlen
Symmetrische Verteilungen
Erfahrungsgemäß treten mit zwei Würfeln die Augensummen 2 und 12 seltener auf als die 6 und 7. Die Zahlen fallen also nicht mehr gleichverteilt. In Scratch lässt sich das leicht simulieren:
Augenzahl = random( 1, 6) + random( 1, 6)
Die Auszählung genügend häufiger Versuche zeigt im Diagramm eine dachförmige Verteilung. Die Anzahl der geworfenen Zahlen steigt von der 2 geradlinig bis zum Maximum bei 6 und 7 an und fällt dann wieder geradlinig bis zur 12 ab. Diese gewichtete Zufallsverteilung unterscheidet sich also auffällig von dem, was der Scratch-Block liefert. Manche Projekte Spiele, Simulationen und Grafik-Experimenten erfordern aber genau diese Verteilung. Sie lässt sich aber in Scratch leicht nachbilden z.B. die Zahlen 1 bis 100 dachförmig verteilt geht so:
Min = 1
Max = 100
Zufallszahl Dach-Typ = ( random( Min, Max) + random( Min, Max)) / 2
Interessant wird es, wenn ein dritter Würfel hinzu kommt: Die resultierende Verteilungskurve wird dann geschwungen glockenförmig.
Zufallszahl Glocken-Typ-3 = ( random( Min, Max) + random( Min, Max) + random( Min, Max)) / 3
Diese glockenförmige Verteilung nennen Statistiker auch Normalverteilung. Sie erinnert an die Notenergebnisse einer Klassenarbeit. Bei einer Klassenstärke von 30 Schülern simuliert man das mit ebenso vielen Würfeln. Als Scratch-Lösung:
Min = 1
Max = 6
Anzahl = 30
Zufallszahl Glockentyp = 0
Wiederhole Anzahl mal
Zufallszahl Glocken-Typ = Zufallszahl Glocken-Typ + random( Min, Max)
end
Zufallszahl Glocken-Typ = round( Zufallszahl Glocken-Typ / Anzahl)
Diese Funktion lässt sich schon sehr universell in verschiedene Projekte verwenden. Es lohnt sich, hierfür einen eigenen Block zu definieren und diesen in einer Funktionssammlung zu speichern:
definiere: Z = normal verteilte Zufallszahl( Min, Max, Würfelanzahl)
Mit Würfelanzahl lässt sich der Verlauf der Verteilungskurve flacher oder spitzer einstellen. Übrigens sprechen wir bisher nur von ganzen Zahlen. Wenn aber ein Projekt zufällige Dezimalwerte benötigt, lässt sich das mit einem kleinen Trick bewerkstelligen:
Für Zufallswerte mit 2 Stellen hinter dem Komma multipliziert man z.B. Max zunächst mit 100 und dividiert die ermittelten Zufallszahlen Z dann wieder durch 100. Voilà !
Ein guter Generator für echte rationale Zufallszahlen braucht allerdings etwas mehr Mathematik (kommt vielleicht später). Wenn der Praktiker stärker gestreute Nachkommastellen benötigt, dann kommt aber auch schon mit folgender Scratch-Programmierung weiter:
Z = normal verteilte Zufallszahl( Min, Max-1, Würfelanzahl)
Z = verbinde( Z, “.”, random(1, 999999999999999))
Und wie ist es mit einer talförmigen Verteilung? Die mittleren Werte sollen nun selten, die Extremwerte dagegen häufiger kommen.
Achtung Falle: Die intuitive Idee, hier einfach die Differenz zu bilden zwischen Max und Zufallszahl geht leider ins Leere. Probier es aus, es kommt exakt die selbe Verteilungskurve heraus!
Hier behilft sich der Scratcher mit einer einfachen Verteilungsliste, die er mit den Zahlen in der gewünschten Verteilungshäufigkeit füllt:
Das funktioniert ganz gut mit einstelligen Ziffern. Es dürfen übrigens beliebige Zeichen -also auch Buchstaben- sein, die sich so gewichtet würfeln lassen.
Für eine allgemeinere Lösung bietet sich eine listengestützte Verteilungsfunktion an. Damit lassen sich dann mehrstellige Zahlen oder gar ganze Worte würfeln. Jeder kennt die Losbude auf der Kirmes - eine Trommel voller Nieten, die gelegentlich mit einer winzigen Prise Gewinn gewürzt wird:
Also: Traue keiner Verteilungsfunktion, die Du nicht selbst getestet hast!
Ich verwende hierzu das Zufalls-Labor: http://scratch.mit.edu/projects/21289848/


Last edited by koDoz (June 1, 2014 10:50:01)
- TM_
-
1000+ posts
gewichtete Zufallszahlen
Danke für die Mühe! Hatte wenig Zeit daran zu arbeiten, aber nun gut, das sieht auch beser aus als das, was ich vor hatte ^^
Ich werd's dann mal gleich sofort einbuen
Ich werd's dann mal gleich sofort einbuen

- TM_
-
1000+ posts
gewichtete Zufallszahlen
so fertig, hab auch noch kurz das Urnenmodell ergänzt 

- koDoz
-
42 posts
gewichtete Zufallszahlen
Wow gute Arbeit ihr alle!

Last edited by koDoz (June 3, 2014 06:01:43)
- Noxxer
-
100+ posts
gewichtete Zufallszahlen
Update im Wiki-Beitrag
auf so ne Idee vorne mehr und hinten weniger (Gewichtete Zufallszahlen) bin ich noch nie gekommen

Und ich habe fast nur Spiele mit Zufallszahlen.
- LiFaytheGoblin
-
1000+ posts
gewichtete Zufallszahlen
Du wärst sicher auch ein guter Wiki Autor! Hättest du nicht lust, da mitzumachen?Wow gute Arbeit ihr alle!ja, ‘a good Collab!’
- koDoz
-
42 posts
gewichtete Zufallszahlen
Sorry @TM_ wg Abtauchen. Hänge in anderen Projekten. Hier nun Part 2. Wenn Du wieder so freundlich wärst …
————————
Schräg gewichtete Zufallszahlen
Z.B. in einer Regen-Simulation ist eine gleichmäßige Verteilung der fallenden Tropfen auf dem Bildschirm wenig überzeugend. Gesucht wird eine Zufallsfunktion, deren Häufigkeitsverteilung an der Raumtiefe gekoppelt ist. Mit anderen Worten sollen große Zahlen häufiger auftreten, als kleine Zahlen. Ein erster Ansatz:
z = Max - sqrt( random( Min, Max) * random( Min, Max))
Tatsächlich erzeugt dies hinten (also in der größeren Raumtiefe Z) mehr Tropfen, als im Vordergrund. Eine noch überzeugendere Verteilung erzeugt diese einfache Verschachtelung zweier Zufallsfunktionen.
z = random( random( Min, Max), Max)
Weitere Verschachtelungen verschärft die Verteilung z.B. durch:
z = random( random( random( Min, Max), Max), Max)
Eine Umkehrung der Verteilung - die kleine Werte häufiger liefert - erreicht man durch folgende Formel:
z = random( Min, random( Min, Max))
'schräg' gewichtete Zufallsfunktionen lassen sich allerdings auch durch Subtraktion vom Maximalwert umkehren:
z = Max - random( random( Min, Max), Max)
Hinweis: die vorgestellte Lösung genügt visuell dem gesetzten Anspruch. Eine exakte mathematische Erörterung der perspektivischen Verkürzung bei räumlichen Simulationen gehört an anderer Stelle.
———————–
Für Part 3 fehlt mir noch etwas ‘Futter’. Ich bleib dran …
————————
Schräg gewichtete Zufallszahlen
Z.B. in einer Regen-Simulation ist eine gleichmäßige Verteilung der fallenden Tropfen auf dem Bildschirm wenig überzeugend. Gesucht wird eine Zufallsfunktion, deren Häufigkeitsverteilung an der Raumtiefe gekoppelt ist. Mit anderen Worten sollen große Zahlen häufiger auftreten, als kleine Zahlen. Ein erster Ansatz:
z = Max - sqrt( random( Min, Max) * random( Min, Max))
Tatsächlich erzeugt dies hinten (also in der größeren Raumtiefe Z) mehr Tropfen, als im Vordergrund. Eine noch überzeugendere Verteilung erzeugt diese einfache Verschachtelung zweier Zufallsfunktionen.
z = random( random( Min, Max), Max)
Weitere Verschachtelungen verschärft die Verteilung z.B. durch:
z = random( random( random( Min, Max), Max), Max)
Eine Umkehrung der Verteilung - die kleine Werte häufiger liefert - erreicht man durch folgende Formel:
z = random( Min, random( Min, Max))
'schräg' gewichtete Zufallsfunktionen lassen sich allerdings auch durch Subtraktion vom Maximalwert umkehren:
z = Max - random( random( Min, Max), Max)
Hinweis: die vorgestellte Lösung genügt visuell dem gesetzten Anspruch. Eine exakte mathematische Erörterung der perspektivischen Verkürzung bei räumlichen Simulationen gehört an anderer Stelle.
———————–
Für Part 3 fehlt mir noch etwas ‘Futter’. Ich bleib dran …
Last edited by koDoz (June 16, 2014 09:13:58)
- TM_
-
1000+ posts
gewichtete Zufallszahlen
Sorry @TM_ wg Abtauchen. Hänge in anderen Projekten. Hier nun Part 2. Wenn Du wieder so freundlich wärst …
Kein Problem, ich hab ja auch genug zu tun

Für Part 3 fehlt mir noch etwas ‘Futter’. Ich bleib dran …
Was hast du denn dafür geplant? Ich hatte schließlich Mathe-LK, da kann ich noch so einiges mit reinnehmen, aber ich weiß halt nicht genau ab wann es für einen jungen Scratcher zu kompliziert wird

(Habe schonmal das Seed-System ergänzt und erklärt, Beispielscript folgt noch!)
- koDoz
-
42 posts
gewichtete Zufallszahlen
Was hast du denn dafür geplant? Ich hatte schließlich Mathe-LK, da kann ich noch so einiges mit reinnehmen, aber ich weiß halt nicht genau ab wann es für einen jungen Scratcher zu kompliziert wird
Ja hast recht, die Balance zu halten ist nicht einfach
a) den jungen Scratchern praktische Handreichungen zur Problemlösung geben, ohne ihn gleich mit Theorie umzuhauen
b) die Themen nicht zu verniedlichen bzw. faktisch Zweifelhaftes meiden (das Mathematiker und ProgiProfis aufheulen läßt)
Aber das Thema ist es wert. Schließlich kommen Spiele, Simulationen und Grafikexperimente kaum ohne Random aus. Möglicherweise kann man letztendlich einen begleitenden Artikel aufsetzten, der die Materie etwas tiefer behandelt. Wäre auch schön, hierzu einige Projekte zu verlinken, die verschiedene Zufallsaspekte anschaulich verdeutlichen.
Der Wiki-Artikel liest sich sehr gut, auch Dank der Verzierungen. Die beiden Punkte 3.2 Urnenmodelle und 3.3 Reproduzierbare Zufallsergebnisse sind sicherlich eigene Hauptpunkte wert - also kommen bestimmt auch gut als Punkt 4. und 5.
Für mich derzeit spannend ist der sagenwirmal psychologische Aspekt von Zufallsverteilung. Z.B. wie zutreffend ist die individuelle Erwartungshaltung bei sog. Glückspielen wie Poker oder jetzt hier speziell bei diesem alten Kulturspiel Schnick-Schnack-Schnuck?
Nachweislich ist ein Programm, das die Symbole Schere Stein Papier stur zufällig wählt, dem menschlichen Spieler überlegen. Menschen können keine wirklich zufälligen Entscheidungen treffen.
Lassen sich die menschlichen Spielzüge mit einfachen Scratch-Mitteln analysieren, um die Gewinnquote des Programms noch weiter hinauf kitzeln? - Ich probier's gerade. ツ
- http://de.wikipedia.org/wiki/Wahrscheinlichkeitsverteilung
- http://de.wikipedia.org/wiki/Zufallszahlengenerator
- http://de.wikipedia.org/wiki/Schnick_Schnack_Schnuck
- http://de.wikipedia.org/wiki/Spieltheorie
Last edited by koDoz (June 18, 2014 13:24:09)
- koDoz
-
42 posts
gewichtete Zufallszahlen
auf so ne Idee vorne mehr und hinten weniger (Gewichtete Zufallszahlen) bin ich noch nie gekommen
Und ich habe fast nur Spiele mit Zufallszahlen.
na, vielleicht passt es ツ
Last edited by koDoz (June 18, 2014 13:31:16)