Discuss Scratch

TM_
Scratcher
1000+ posts

gewichtete Zufallszahlen

Den Erwartungswert könnte man auch noch reinpacken Der kann Programmtechnisch ja auch ganz nützlichsein, da man damit ja ermittelt, ob ein Glücksspiel für beide Seiten fair ist oder welche der beiden Seiten einen Vorteil zieht. Da man Glücksspiele in Scratch ja möglichst fair machen will und nicht der Maschine einen Vorteil geben will, ist es schon praktisch den Erwartngswert berechnen zu können
koDoz
Scratcher
42 posts

gewichtete Zufallszahlen

@TM_ Der Querlink zum englischen Scratch-Wicki wäre generell nützlich: http://wiki.scratch.mit.edu/wiki/Random. (Vielleicht gibt es dann auch einen Backlink) Wie beim ‘Großen’ Wiki gibt der Seitenblick in die engl. franz. oder sonstigen Sprachversionen zuweilen wertvolle Ergänzungen. Wie in diesem Fall der explizite Hinweis auf die eingebaute Zufallsfunktion in List-Blöcken. Hier also der nächste Baustein …

4. Zufallsfunktionen mit Listen

4.1 Urnenmodell

4.2 Listen zufällig mischen
Ein faires Kartenspiel beginnt stets mit dem Mischen. Für alle Spieler sollen die Luschen und Trümpfe ja gleichmäßig und gerecht in Stapel verteilt sein. Zur Simulation des Kartenstapels verwendet der erfahrene Scratcher zumeist eine Liste. Das vollständige Mischen einer Liste benötigt nur wenige Programm-Zeilen:

repeat (length of (Kartenstapel))
set (Position) to (pick random (1) to (length of (Kartenstapel)))
add (item (Position) of [Kartenstapel]) to [Kartenstapel]
delete (Position) of [Kartenstapel]
end

4.3 Eingebaute Zufallsfunktion
Eine wohl weniger bekannte Anwendung der Zufallsfunktion versteckt sich in einigen Listen-Blöcken. Wenn die Position eines Listenelementes anzugeben ist, bestehen folgende Auswahlmöglichkeiten:
  • erstes Element
  • letztes Element
  • ein zufälliges Element
  • oder es wird die Elementnummer als Zahl, Variable oder Werte-Block angegeben
Das Zufalls-Element ist kein zusätzliches Programmfeature, da man ja auch einen Zufalls-Block einsetzen kann. So wird aber das Scripting kürzer und vor allem lesbarer. Die folgenden beiden Anweisungen haben also exakt die selbe Wirkung - welcher Scratch-Stil spricht Dich mehr an?

set (Los) to (item (pick random (1) to (length of (Los-Trommel))) of [Los-Trommel v]) 

set (Los) to (item (zufällig v) of [Los-Trommel v])

Die 4 Listenblöcke mit eingebauter Zufallsfunktion sind: Element einfügen, Element ändern, Element löschen und Element lesen:

insert [thing] at (zufällig v) of [list v]
replace item (zufällig v) of [list v] with [thing]
delete (zufällig v) of [list v]
(item (zufällig v) of [list v])

@Lirex & Co: Die Inhalte interessieren mich derzeit noch mehr, als das Fummeln im Wicki-Code - will mich da nicht verzetteln. Werde mich bei Zeiten aber auch mal daran versuchen. Versprochen

Last edited by koDoz (June 20, 2014 10:50:44)

TM_
Scratcher
1000+ posts

gewichtete Zufallszahlen

okay, ich werds gleich mal einbauen, hänge aber schon an einem kleinen Problem fest: Das Urnenmodell weg von der Symmetrischen Verteilung zu den Listenfunktionen. Der übergang zu den Urnenmodellen ist sehr flüssig, da der eine Fall jaa uch zur talförmigen Verteilung gehört. Daher denke lassen wir das mit dem Urnenmodell so, da ein Sprung zwischen diesen beiden Punkten den Lesefluss etwas stört und Neulinge auch erwirren könnte, da dazwischen ja von anderen Dingen die Rede ist Oder hat da jemand einen besseren Vorschlag?
TM_
Scratcher
1000+ posts

gewichtete Zufallszahlen

So, hab nun auch meine mathemathischen Kentnisse eingebracht
Wahrscheinlichkeitsrechnungen

Last edited by TM_ (June 20, 2014 12:59:31)

forth
Scratcher
15 posts

gewichtete Zufallszahlen

super!

Last edited by forth (June 20, 2014 22:47:40)

koDoz
Scratcher
42 posts

gewichtete Zufallszahlen

TM_ wrote:

… Der übergang zu den Urnenmodellen ist sehr flüssig, da der eine Fall jaa uch zur talförmigen Verteilung gehört. Daher denke lassen wir das mit dem Urnenmodell so, …

Ja sehe ich auch so.
a) Symmetrische und schräge Verteilung gehören ohne Zwischenthema zueinander, hier erfolgt die Produktion der Zufallszahlen durch Anwendung des Random-Blocks.

b) Bei der talförmigen Verteilung und dem Unrnenmodell allgemein greifen wir aber zufallsgesteuert auf Listenwerte zu. Ein ganz eigenes Produktionsprinzip. Das bindet die beiden Themen. Daher keinerlei Bedenken das talförmige als Einleitung zum Urnenmodell zu lassen. Das ganze gehört dann logischerweise unter ‘Zufallsfunktionen mit Listen’ zusammen mit Mischen und Hinweis auf die eingebauten Randomfunktionen.

c) Für die Königskategorie halte ich natürlich die Programmierung eines eigenen Zufallsgenerators mit Seed usw. kriegen wir das hin? Hierzu passen dann gut die Mathematischen Zusammenhänge. Ganz hervorragend übrigens.

… ggf. können noch eine kleine Sammlung von FAQ's, Tricks und Tipps aus der Praxis zum Abschluss angehängt werden. Es gibt sicherlich Autoren, die dazu noch pfiffiges in der Kramkiste haben ツ

Last edited by koDoz (June 21, 2014 05:29:34)

koDoz
Scratcher
42 posts

gewichtete Zufallszahlen

@TM_ hier noch einige technische Fragen zum Random-Block. Ist vor Übernahme ins Wiki als F&A inhaltlich teilw. noch zu klären …


Frage: Was sind die maximalen/minimalen Parameterwerte, die der Random-Block akzeptiert?

Antwort: Die in Scratch (v420) größtmögliche Zahl liegt bei ca. 10^308 = 1e+308. Praktische Versuche (siehe experimentelles Projekt) ergaben, das der Random-Block noch Werte im Bereich 1.6e+308 bis -1.9e+307 akzeptiert. Werte darüber hinaus führen zu: Infinitiy. Achtung: Möglicherweise sind in diesen Grenzbereichen die Werte der produzierten Zufallszahlen nicht gleichverteilt sondern lediglich die Ziffernfolgen (bei hohen Exponenten)


Frage: Wann erzeugt der Random-Block ganzzahlige, wann Dezimal-Werte?

Antwort: Grundsätzlich erscheinen (v420) Dezimalwerte, wenn einer der Parameter ein Dezimalzeichen enthält. Z.B 1.1. Die Anzahl der produzierten Nachkommastellen lässt sich nicht steuern und ist auf 6 begrenzt.
Bei ganzzahligen Parametern bis ca 1.99e+9 (=1999999999) werden ganzzahlige Zufallszahlen produziert.
Achtung: Bei Parametern ab > 2e+9 zeigen die Zufallswerte unerwartete Nachkommastellen.


Frage: Ist die Reihenfolge der Parameter im Random-Block relevant?

Antwort: No Problem! Hier zeigt sich der Block angenehm fehlertollerant:
random( 10, -10) ist also gleichwertig zu random( -10, 10)

Schreibfehler korrigiert

Last edited by koDoz (June 21, 2014 18:49:55)

TM_
Scratcher
1000+ posts

gewichtete Zufallszahlen

koDoz wrote:

@TM_ hier noch einige technische Fragen zum Random-Block. Ist vor Übernahme ins Wiki als F&A inhaltlich teilw. noch zu klären …


Frage: Was sind die maximalen/minimalen Parameterwerte, die der Random-Block akzeptiert?

Antwort: Die in Scratch (v420) größtmögliche Zahl liegt bei ca. 10^308 = 1e+308. Praktische Versuche (siehe experimentelles Projekt) ergaben, das der Random-Block noch Werte im Bereich 1.6e+308 bis -1.9e+307 akzeptiert. Werte darüber hinaus führen zu: Infinitiv. Achtung: Möglicherweise sind in diesen Grenzbereichen die Werte der produzierten Zufallszahlen nicht gleichverteilt sondern lediglich die Ziffernfolgen (bei hohen Exponenten)



Das könnte nützlich sein, gehört aber sicher auch an eine andere Stelle im Wiki, da es sich ja nicht nur auf diesen Block bezieht, sondern alle numerischen Werte. Das wollte ich sowieso noch machen, da es auch bei Strings Begrenzungen gibt (die Länge darf seit neustem 10200 Zeichen nicht überschreiten)
Übrigens heißt es Infinity (unendlich) und nicht Infinitiv :D :P



Frage: Wann erzeugt der Random-Block ganzzahlige, wann Dezimal-Werte?

Antwort: Grundsätzlich erscheinen (v420) Dezimalwerte, wenn einer der Parameter ein Dezimalzeichen enthält. Z.B 1.1. Die Anzahl der produzierten Nachkommastellen lässt sich nicht steuern und ist auf 6 begrenzt.
Bei ganzzahligen Parametern bis ca 1.99e+9 (=1999999999) werden ganzzahlige Zufallszahlen produziert.
Achtung: Bei Parametern ab > 2e+9 zeigen die Zufallswerte unerwartete Nachkommastellen.



Das ist sogar schon erklärt. Habe ich ergänzt, als ich deinen ersten Beitrag eingebaut habe ;)


Frage: Ist die Reihenfolge der Parameter im Random-Block relevant?

Antwort: No Problem! Hier zeigt sich der Block angenehm fehlertollerant:
random( 10, -10) ist also gleichwertig zu random( -10, 10)


Das ist gut!



Last edited by TM_ (June 21, 2014 13:09:25)

koDoz
Scratcher
42 posts

gewichtete Zufallszahlen

TM_ wrote:

… übrigens heißt es Infinity (unendlich) und nicht Infinitiv
Stümpt!
Lirex
Scratcher
500+ posts

gewichtete Zufallszahlen

Ist die Maximallänge 10200 oder 10240? Ich meine, Letzteres wäre der Fall…
TM_
Scratcher
1000+ posts

gewichtete Zufallszahlen

Lirex wrote:

Ist die Maximallänge 10200 oder 10240? Ich meine, Letzteres wäre der Fall…

stimmt, 10240, ich hatte irgendwiedas Gefühl da war irgendwo ne 4 drin, aber ich war mir erst auch sicher, dass es 2 Nullen hatte
Weißt du eigentlich mittlerweile mehr darüber? Also wieso das gemacht wurde?
Lirex
Scratcher
500+ posts

gewichtete Zufallszahlen

TM_ wrote:

Lirex wrote:

Ist die Maximallänge 10200 oder 10240? Ich meine, Letzteres wäre der Fall…

stimmt, 10240, ich hatte irgendwiedas Gefühl da war irgendwo ne 4 drin, aber ich war mir erst auch sicher, dass es 2 Nullen hatte
Weißt du eigentlich mittlerweile mehr darüber? Also wieso das gemacht wurde?
Nein, leider nicht. Nur, dass es meine Cloud Liste zerschossen hat. ^^
Ich vermute sogar, dass das eher technische Gründe hat. Darauf deutet jedenfalls die Zahl 10240 hin. Das ist ja eine Potenz von 2 mit 10 multipliziert (2^10*10) Ich glaube, ich frage mal beim Scratch Team direkt nach.

Last edited by Lirex (June 21, 2014 21:03:13)

koDoz
Scratcher
42 posts

gewichtete Zufallszahlen

Lirex wrote:

TM_ wrote:

Lirex wrote:

Ist die Maximallänge 10200 oder 10240? Ich meine, Letzteres wäre der Fall…

stimmt, 10240, ich hatte irgendwiedas Gefühl da war irgendwo ne 4 drin, aber ich war mir erst auch sicher, dass es 2 Nullen hatte
Weißt du eigentlich mittlerweile mehr darüber? Also wieso das gemacht wurde?
Nein, leider nicht. Nur, dass es meine Cloud Liste zerschossen hat. ^^
Ich vermute sogar, dass das eher technische Gründe hat. Darauf deutet jedenfalls die Zahl 10240 hin. Das ist ja ein Vielfaches von 2 mit 10 multipliziert (2^10*10) Ich glaube, ich frage mal beim Scratch Team direkt nach.

Hab dann mal ein eigenes Forums-Thema angelegt: Grenzwerte

Last edited by koDoz (June 21, 2014 19:26:16)

TM_
Scratcher
1000+ posts

gewichtete Zufallszahlen

Lirex wrote:

TM_ wrote:

Lirex wrote:

Ist die Maximallänge 10200 oder 10240? Ich meine, Letzteres wäre der Fall…

stimmt, 10240, ich hatte irgendwiedas Gefühl da war irgendwo ne 4 drin, aber ich war mir erst auch sicher, dass es 2 Nullen hatte
Weißt du eigentlich mittlerweile mehr darüber? Also wieso das gemacht wurde?
Nein, leider nicht. Nur, dass es meine Cloud Liste zerschossen hat. ^^
Ich vermute sogar, dass das eher technische Gründe hat. Darauf deutet jedenfalls die Zahl 10240 hin. Das ist ja eine Potenz von 2 mit 10 multipliziert (2^10*10) Ich glaube, ich frage mal beim Scratch Team direkt nach.

Ich kann mir aber auch vorstellen, dass es einen ähnlichen Sinn wie die Grenze von 10 Cloud-vars pro Projekt hat. Denn wären Strings uneingeschränkt, könnte man ja auch den Inhalt von hunderten Listen darin speichern, so wie es mit deiner Engine ja möglich ist. Ob der Grund für die Cloud-Data begrenzung wirklich technischen Ursprungs ist bleibt aber unklar.
finnymabob62
Scratcher
9 posts

gewichtete Zufallszahlen

Hi!

Powered by DjangoBB