Zufallszahl

  • Grüße!


    Weiß jemand wie man eine Zufallszahl aus[1,2,3,4] (also nur Ganzzahlen zw. 1 und 4) in nem Robbi bekommt?


    Was ähnliches gab es 2010 schon mal, aber keine befriedigende Antwort.


    Robbi ist ein kr 3 mit krc 2.


    Gruß Thoms

  • Schritt für Schritt zum Roboterprofi!
  • Ich habe auch mal die x-te Nachkommastelle aus den aktuellen Achswerten als Startwert verwurstet.
    Zufallsgeneratoren programmiert man normalerweise so, dass sie einen REAL-Wert zwischen 0 und 1 auswerfen. Der Rest ist multiplizieren mit dem Maximalwert und dann Runden.


    Grüße,
    Michael

  • also wenn mir jemand sagenkann wie man beim kuka einen links bzw rechtsshift machen kann dann würde ich gerne folgendes implementieren:


    uint32_t xorshift32() {
    static uint32_t x = 314159265;
    x ^= x << 13;
    x ^= x >> 17;
    x ^= x << 5;
    return x;
    }


    ^ ist XOR
    << ist linksshift
    >> ist rechtsshift

  • Links und rechtsschiften ist auch nichts anderes als mit 2 zu multiplizieren/dividieren. Beim multiplizieren aber darauf achten, dass das höchste Bit vorher ausmaskiert wird.

  • Hallo Thoms,


    ich hätte auch einen Vorschlag.
    Dies hab ich noch nicht getestet und funktioniert wohl auch
    nur wenn die Achsen bestromt sind. Ebenso nicht für OfficeLite.
    Als Zufallsgenerator wird der Achsstrom der Achse A2 heran gezogen.
    Aber ich denke es sollte was annähernd zufälliges raus kommen.
    Das Ausmaskieren könnte man in deinem Fall (4 Werte) bequem über
    nicht benutzte Ausgänge machen.


    ==========================================
    $Config.dat
    SIGNAL Zufallszahl32Bit $OUT[101] TO $OUT[132]
    SIGNAL Zufallszahl2Bit $OUT[101] TO $OUT[102]
    ==========================================


    ==========================================
    Hauptprogramm.src
    abc = Zufallszahl()
    ==========================================


    ==========================================
    DEFFCT INT Zufallszahl()
    DECL INT Wert
    CONTINUE
    Zufallszahl32Bit = $CURR_ACT[2] * 1000000.0
    CONTINUE
    Wert = Zufallszahl2Bit + 1
    RETURN Wert
    ENDFCT
    ==========================================



    Gruß
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

  • Hallo,


    danke für eure Hilfe!


    Speziell an Grubba - auch wenn ich damit erstmal meine Probleme hatte.. Vergaß die Grundlagen der Exponentialrechung (Mathe 6. Kalsse oder so?) hab für 13 mal Linksshift immer erstmal *26 (*2*13) gerecnet anstatt *2^13 :wallbash: :wallbash: :wallbash:


    Habs getestet, funzt soweit.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden