-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Pseudozufallsgenerator ? (gelöst)

  1. #1
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970

    Pseudozufallsgenerator ? (gelöst)

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo!

    Ich möchte, dass mein künstliches Tier (k.T) bei einem Hindernis sich um quasi zufälligen Winkel dreht und danach geradeaus fährt. Die Suche in unserem Forum hat mir leider keine Antwort gebracht. Für mich ist es mit simple Hardware kein Problem, möchte es aber, wenn möglich, rein softwaremässig in ASM lösen. Es reichen 4-bittige Hexzahlen aus. Ist es mit kürzerem als 16-bittigen Register mit Schiebung/Rotierung um 1 Bit möglich ? Vielleicht mit Carry-Flag in 8-bittigem Register und anschlessender Rotierung ?

    Ich habe das im Netz gefunden, aber weiß ich leider nicht, was CRC ist.


    Hier ist einfach Hack, den ich vor einigen Jahren eingesetzt. Ich arbeitete in Embedded und ich musste RAM auf Power-up-Test, und ich wollte wirklich klein, schnell Code und sehr wenig Staat, und ich habe dazu:

    * Beginnen Sie mit einem beliebigen 4-Byte-Konstante für deinen Samen.

    * Berechnen Sie die 32-Bit-CRC dieser 4 Byte. Das gibt Ihnen die nächsten 4 Bytes

    * Feed back diese 4 Bytes in den CRC32-Algorithmus, als wären sie angehängt. Die CRC32 dieser 8 Bytes wird der nächste Wert.

    * Wiederholen Sie, solange Sie wollen.
    Ich bin für jeden praktischen Hinweis sehr dankbar, weil Programmierung nur mein Hobby ist.

    MfG

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Lösung für Faule ist die random() Funktion aus libc.

    Eine andere Lösung ist das nachprogrammieren eines Schieberegisters mit Rückkopplungen via XOR. Mit nur 8 Bit wird das aber nicht besonders gut, weil man da halt nur maximal 255 verschiedenen Zustände bekommt. Das ist eine noch sehr überschaubare Zufallsfolge.

    Bei der Programmierung kann man aber auch längere Schieberegister (z.B. 32 Bits) machen, wie angedeutet über das Carry flag und dann den Befehlen die beim Verschieben das Carry-Flag mit nutzen (z.B. ROL beim AVR ).


    edit:
    Noch ein Link dazu:
    http://de.wikipedia.org/wiki/Linear_...chieberegister

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo Besserwessi!

    Vielen Dank für deine, für mich retende, Antwort !

    Ich bin, glaube ich, nicht faul, habe aber leider keine Liebrary's in ASM für PIC's und werde das gerne selber programmieren. Das mit Schieberegister und XOR kann ich mir noch als Hardwarelösung erinnern, softwaremässig realisieren und 255 Richtungen brauche ich sicher nicht.

    Das mit Carry-Flag ist nur meine "verrückte" Idee, die mir spontan eingefallen ist. Wenn es jedoch Sinn machen würde, werde ich noch darüber ernst nachdenken, weil ich für mein Spielzeug nichts "professionelles" brauche.

    Besonders bin ich dir für den Link dankbar, den ich eigentlich selber finden sollte. Dann bin ich doch faul ...

    MfG

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Ein unbeschalteter Adc Pin ist auch immer gut zum erstellen von zufälligen Werten.

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo TobiKa!

    Schönen dank für deine tolle Idee, die ich sicher verwende, falls ich mich für PIC mit ADC entscheide.

    Vielleicht mit einem genug langem Stück Draht am Eingang des ADC's eventuell noch beim störenden Antriebsmotor, wird es noch besser "funktionieren", weil der Eingangswiderstand bei PIC's nur um 10 k ist. Es wäre zwar eine Hardware, aber einfachste Lösung.

    In jedem Fall werde ich versuchen den ADC maximal zu stören, was nicht normal ist, oder ?

    MfG

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    Hallo,

    es reicht ein beliebiger als Input definierter Pin (unbeschaltet, ohne Pullup), bei dem man Bit für Bit seine Zufallszahl einliest. Das könnte man das als Seed für den Pseudogenerator nehmen und erhält immer unterschiedliche Zahlenfolgen.

    mfg

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo Netzman!

    Super Idee, herzlichen Dank!

    Es ist noch einfachere Idee, falls ich doch einen PIC ohne ADC für mein Spielzeug nehme. Eine "Antenne" am Pin könnte das evtl noch verbessern ...

    Das es noch einfacher geht, bezweifle ich schon langsam ...

    MfG

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Musst nur aufpassen das du bei starken Störungen + einer Antenne nicht immer ein High bekommst.

    Aber wie auch immer, wenn du es getestet hast, berichte mal bitte!

  9. #9
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Natürlich, gerne, aber erst wenn ich so weit bin, weil momentan baue ich den Fargestell ...

    Also bis irgendwann!

    MfG

  10. #10
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Nur ein ADC mit "Antenne" ist kein guter Zufallsgenerator. Dabei kommen dann oft 50 Hz oder ähnliches bei raus. Selbst wenn man nur dsa untere Bit des ADs nimmt, hat man damit z.B.: nicht gesichert das man 50% H und L hat. Man sollte den echten Zufall dann noch einmal mit einer Pseudozufallszahl verknüpfen. So kann man z.B: leicht sicher stellen das die Verteilung so ist wie man es erwartet und von externen Einflüssen unabhängig.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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