INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Randomize timer > i = rand mod 4 > > liefert immer das gleiche Ergebnis. > > Ein pause Befehl oder eine Schleife vor Randomize nutzt auch nichts. relativ klar - was willst du auch mit dem gammligen rest der division? du musst den gesamten wertebereich des zufallsgenerators durch division einschränken. in dem fall so, dass du 4 einheiten berücksichtigst, um eine gleichmässige verteilung zu erhalten. wobei es mit der normalverteilung eh ein problem gibt, da du das ergebnis zwangsweise manipulieren musst, um eine positive zufallszahl zu erhalten. entweder alles per ABS positivieren oder aber mathematisch richtiger nur positive zahlen verwenden und den kontroller veranlassen, bei erhalt einer negativen zufallszahl so lange eine neue zu generieren, bis er eine positive erzeugte. im übrigen ist es völlig normal, dass auch nach randomize die ersten (ich glaube 8) erzeugten zufallszahlen stets die selben sind. um das loszuwerden, muss man also am programmstart zunächst randomize timer schreiben, dannach "sinnlos" 10 zufallszahlen per schleife erzeugen lassen und dann hat man garantiert welche, wenn man den kontroller nicht per autostart losrennen lässt, denn der timer hätte ja dann auch immer den selben wert. also: -32768 / 4 macht -8192 -----> 32767 / 8192 is demnach immer kleiner als 4 demnach gibt das folgende programm auch nur zahlen 0 <= x <= 3 aus. define x word define i byte randomize timer for i = 1 to 8 x = rand next i #RNDTST x = rand if x < 0 then RNDTST x = x / 8191 print x goto RNDTST |
Antwort schreiben |