mikrocontroller.net

Forum: Compiler & IDEs Zufallsgenerator


Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennt jemand eine Möglichkeit eine zufällige Zahl zwischen x und y (soll
man variabel halten können, so wie bei: www.php.net/rand )
 zu bekommen?
Wichtig: Es soll variabel bleiben können, ich kann dann also net jedes
Mal die stdlib.h abändern (zumal ich es mehrmals im Code mit
verschiedenen Werten brauche).

Schonmal danke für alle Tipps
tacklemoe

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es hätte sowieso keinen Sinn, stdlib.h zu ändern.  Diese Datei gehört
zur avr-libc, sie ist nicht durch den Benutzer zu verändern.  Die
Änderung von RAND_MAX da drin würde rein gar nichts bewirken außer daß
Deine Applikation ein RAND_MAX sieht, das nicht mehr zur Bibliothek
paßt.

Der korrekte Weg ist, das Ergebnis von rand() (oder random()) passend
zu skalieren.  Es ist ja letztlich weiter nichts als eine Zufallsfolge
mit 16 bzw. 32 zufällig verteilten Bits, Du mußt nur den Wertebereich
entsprechend einschränken.  Klassisch würde man das mit einem modulus
machen, allerdings ist der ziemlich rechenzeitaufwendig.

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.