gibt es irgendeine Möglichkeit oder Library, um in C18 schnell Zufallszahlen zu generieren (0-1000)? Rudi
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 :)
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.
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ß
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".
Gängige Variante wär auch, eine Zenerdiode mit dem ADC zu vermessen. Zenerdioden sind von Haus aus eh schon Rumpelgurken :-)
>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.
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.
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...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.