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

Thema: Zufallsgenerator

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68

    Zufallsgenerator

    Guten Abend

    Ein Freund und Ich wollen ein Brettspiel elektronisch nachbauen.
    Es handelt sich um die Spanische Versions von Mensch Ärgere Dich nicht.

    Ich habe eine kurze frage wie ich in C einen Zufallsgenerator programmieren kann.
    Und zwar gedacht für den Würfel.

    Als Würfel ist ein Kreis aus 6 Leds gedacht und nach Ende des Würfelzykluses soll das Ergebniss noch auf einer 7-Segmentanzeige erscheinen. Starten soll man das ganze über einen Taster.

    Mir geht es jetzt hier allerdings um den Programmzyklus für die Zufallschleife des eigentlichen Würfels so das immer wieder andere Zahlen ausgegen werden.

    Gruss
    Patrick

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hi,

    also da gibts mehrere Möglichkeiten.
    Zum einen könntest du dir bewusst an einem ADC-Pin Störungen einfangen, um diese als "Zufall" zu verwenden.
    Oder du misst die Zeit des Tastendrucks und nimmst diesen Wert als Zufall.
    Natürlich gibts wohl noch einige andere Möglichkeiten, diese beiden sind mir eben gerade eingefallen.

    Gruß
    Chris

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Pseudo RNG [1] .... Als seed anfangs die Zeit zwischen einem tastendrock oder ähnliches nehmen. [2] scheint auf µC's umsetzbar zu sein.

    [1] http://de.wikipedia.org/wiki/Kategor...ahlengenerator
    [2] http://de.wikipedia.org/wiki/KISS_(Z...hlengenerator)

  4. #4
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    mit diesen aussagen kann ich irgendwie nix anfangen

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Code:
    #include <stdint.h>
     
    // interner Zustand
    static uint32_t x = 123456789; // <- beliebige seed != 0
    static uint32_t y = 362436000;
    static uint32_t z = 521288629;
    static uint32_t c = 7654321;
     
    uint32_t KISS() {
       uint64_t t;
     
       // Linearer Kongruenzgenerator
       x = 69069 * x + 12345;
     
       // Xorshift
       y ^= y << 13;
       y ^= y >> 17;
       y ^= y << 5;
     
       // Multiply-with-carry
       t = 698769069ULL * z + c;
       c = t >> 32;
       z = (uint32_t) t;
     
       return x + y + z;
    }
    Das ist dein Zufallszahlengeneratur.

    static uint32_t x = 123456789; // <- beliebige seed != 0

    Das ist dein seed. Der "Samen" des Zufalls. Ist dieser Wert immer gleich, kommt immer dieselbe Reihe an Zahlen raus. Ergo, addiere einfach eine Zeit aus einem Timer beim Start des Spieles drauf... aber nur einmalig.

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Der Pseudozufallsgenerator von schorsch_76 wäre eine Möglichkeit.

    Eine andere Möglichkeit wäre so etwas wie ein echter "Zufall", etwa über die Zeitmessung, etwa für die Zeit wann die Taste zum würfeln gedrückt wird. Je nach µC geht das sehr einfach: wenn der µC einen Timer mit Capture funktion hat, kann man den Timer direkt und schnell bis 5 Zählen lassen, und die Capture funktion scharf stellen. Bei jeder Flanke bekommt man dann einen Quasi zufälligen Wert von 0-5 im Capture Register - nach jeder Taste hat man da also einen neuen Wert.

    Durch das Zählen nur bis 5 spart man sich die ggf. etwas trickreiche Umrechung in den Bereich 1-6.

Ähnliche Themen

  1. [ERLEDIGT] Zufallsgenerator ?
    Von PICture im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 03.08.2013, 18:39
  2. Zufallsgenerator
    Von erni55 im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 15.01.2008, 10:39
  3. Zufallsgenerator
    Von psy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 30.06.2007, 16:06
  4. Zufallsgenerator
    Von Ozzy im Forum Assembler-Programmierung
    Antworten: 9
    Letzter Beitrag: 07.09.2006, 10:55
  5. Zufallsgenerator in C2?
    Von Dirk im Forum C-Control II
    Antworten: 5
    Letzter Beitrag: 28.08.2004, 19:02

Berechtigungen

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

12V Akku bauen