www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zufallszahlen mit C18


Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es irgendeine Möglichkeit oder Library, um in C18 schnell 
Zufallszahlen zu generieren (0-1000)?

Rudi

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
niemand eine Idee?

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem liegt wohl bei "schnell" srand() und rand() kann der c18 von 
alleine wenn du die math.h einbindest.

wirklich zufällige zahlen kriegst du dann wenn du auf einem offenen 
analogeingang misst und die letzten paar stellen auch noch heranziehst 
:)

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an die Einbeziehung eines Analogeinganges hab ich schon gedacht. Aber 
damit kann ich keinen Bereich von 0-1000 abdecken...

in der math.h hab ich gerade etwas herumgestöbert, rand bzw. srand ist 
dort aber nicht enthalten.

Autor: Michael W. (retikulum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such mal in der stdlib.h
Michael

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jup habs gefunden, danke.

Autor: ayxayx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du aber halbwegs zufällige Zahlen haben möchtest kommst du über 
einen Analogeingang nicht herum. Sonst spuckt die Methode immer die 
selben zahlen aus. Gruß

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, mein Fehler :D
Sorry wegen der falschen Lib.

Ich würde wie mein Vorredner unbedingt einen Analogwert als Seed 
verwenden, sonst wird das nie richtig "zufällig".

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gängige Variante wär auch, eine Zenerdiode mit dem ADC zu vermessen. 
Zenerdioden sind von Haus aus eh schon Rumpelgurken :-)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn du aber halbwegs zufällige Zahlen haben möchtest kommst du über
>einen Analogeingang nicht herum. Sonst spuckt die Methode immer die
>selben zahlen aus. Gruß

Das kommt drauf an wie die Zufallszahlen erzeugt werden.
Wenn der Zufall mit Benutzereingaben gekoppelt sein
soll könnte man rand() z.B. in einem Timerinterrupt
dauernd aufrufen. Also ständig Zufallszahlen erzeugen
auch wenn sie noch gar nicht gebraucht werden..
Alleine durch die unterschiedlichen Reaktionszeiten
bekommt man so schon ganz brauchbare Ergebnisse.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus einem Analogeingang würde ich höchstens den Seed für einen 
Software-Zufallsgenerator ziehen.

Was aus einem Analogeingang in den µC kommt, ist nämlich alles nur nicht 
gleichverteilt, wenn man dafür nicht den entsprechenden Hardwareaufwand 
treibt.

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke inzwischen mal für die Antworten.
Ist es möglich den internen Oszilator mit dem externen zu Vergleichen? 
Ich bin mir aber nicht sicher ob die Diskrepanzen ausreichen würden, um 
Zufallszahlen zu erzeugen...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.