- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 7 von 7

Thema: Zufallsgenerator mit CCBASIC für RP5?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165

    Zufallsgenerator mit CCBASIC für RP5?

    Anzeige

    Powerstation Test
    Hi allesamt.
    Kennt zufällig jemand eine Möglichkeit, dass man im Code irgendwie per Zufall etwas ausführen lässt? Ich bin dabei meinem Robby einige einfache Verhaltensweisen zu programmieren, alelrdings sollen die nicht starr hintereinander laufen, sondern per Zufall ausgewählt werden.
    Weiß hier jemand einen Befehl dafür? Bin für Hinweise jeglicher Art dankbar!


    Gruß
    Corone

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Zufall

    Hallo corone,

    da gibt's doch z.B.:

    randomize timer
    y=rand

    Schau mal in die Hilfe zu CCBASIC!

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    hmm... das hab ich inzwischen auch egfunden, danke dafür. aber das problem ist, dass ich nen wirklichen zufallswert brauche... und in der endlosschleife müssen alle zahlen mal vorkommen. mit randomize ergibt sich eine auf dauer immer dientische zahlenfolge, es werden nicht alle möglichen zahlen irgendwann mal getroffen.
    mit randomize timer erhalte ich das selbe ergebnis...

    wüsstest du noch eine andere lösung?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Zufallszahlen

    Hallo corone,

    mit randomize timer erhalte ich das selbe ergebnis...
    Klar: Es sind ja nur Pseudo-Zufallszahlen.

    Man kann ein besseres Ergebnis erreichen, wenn vom Booten bzw. Reset nicht genau die selbe Zeit bis zur Zeile mit randomize vergeht.

    Bei einem Lottozahlen-Prog habe ich den User vor dem randomize gezwungen, den Tastsensor TOUCH zu berühren. Danach gehts erst im Prog weiter. Dadurch ist der timer nicht mehr konstant und es werden bessere Zufallszahlen erreicht.

    Gruß Dirk

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    hmm... die idee hat was... in die aufzurufenden subprogramme unterschiedlich lange pausen einfügen, damit er auf neue zufallsergebnisse kommt...

    danke dir erst mal. falls du noch irgend eine bessere idee hast, wäre ich dir sehr dankbar!


    gruß
    corone

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Zufallszahlen

    Hallo corone,

    hmm... die idee hat was... in die aufzurufenden subprogramme unterschiedlich lange pausen einfügen, damit er auf neue zufallsergebnisse kommt...
    ... nee, so war das nicht gemeint. Die Pausen z.B. vor dem rand-Aufruf verändern die Zufallszahlenreihenfolge nicht.

    Das Einzige, was Sinn macht, ist randomize immer am Anfang des Programms mit einem zufälligen Wert aufzurufen, der nicht beim Start immer gleich ist. Wenn man als Parameter für randomize den timer nimmt, dann bringt das auch nicht viel, weil vom Hochfahren des uC (CC1) bis zum Aufruf der randomize-Zeile jedesmal fast genau dieselbe Zeit benötigt wird. Damit hat timer bis auf geringe Abweichung denselben Wert. Das führt dann zur selben Abfolge der Zufallszahlen.
    Man braucht also einen zufälligen Parameter für randomize. Wenn ich timer nehmen will, muss ich die Zeit bis zum Aufruf der Zeile unplanbar machen. Das meinte ich mit dem Berühren des TOUCH-Sensors. Niemand kann ihn so exakt zu einer bestimmten Zeit nach dem Booten berühren, dass timer den selben Wert enthalten würde.
    Eine andere Lösung wäre, einen ganz anderen Parameter zu nehmen. Da bietet sich z.B. der Helligkeitssensor an, der wohl auch beim Start nicht immer den gleichen Wert haben wird, oder eine Multiplikation aus Helligkeit und Geräuschpegel im Raum ... Der Phantasie sind keine Grenzen gesetzt.

    Was nichts bringt, sind zeitliche Veränderungen vor oder nach rand-Aufrufen. Da rand die Zufallszahlen errechnet, wird eine längere oder kürzere Zeit bis zum rand-Aufruf nichts ändern.

    Verbesserungen kannst du nur über randomize (s.o.) erreichen.

    Zur Sicherheit noch eins: Du rufst doch randomize nicht jedesmal vor rand auf??? randomize sollte am Anfang des Progs einmal erscheinen (mit möglichst zufälligem Parameter). Im Prog selbst gibt es dann nur noch die rand-Aufrufe.

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    hallo dirk,
    danke noch mal für deine antwort. ja, ich hatte das irgendwie falsch verstanden... hat auch wirklich nix gebracht... zu der anderen idee:


    Da bietet sich z.B. der Helligkeitssensor an, der wohl auch beim Start nicht immer den gleichen Wert haben wird, oder eine Multiplikation aus Helligkeit und Geräuschpegel im Raum
    das hatte ich auch schon überlegt und gleich mal ausprobiert, aber es bringt nicht viel. die zahlen ändern sich leider kaum bis gar nicht (zumal mein robby immer in der selben umgebung eingesetzt wird).


    was mich vor allem wundert, ist, dass ich manchmal ca 50 verschiedene zahlen bekomme, bevor sich die sequenz wiederholt und manchmal sogar nur drei oder vier... einfach ein paar mal resetten und neu starten... wie kommt das zustande?


    gruß
    corone

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress