Zufallszahl beim ATmega8

OP #3995269
Hallo,

ich möchte aktuell für ein Flackerlich eine Zufallszahl auf dem ATmega8 
generieren lassen. "rand();" ergibt immer nur die selbe zahl. Ich habe 
es mit srand(); versucht, doch dort braucht man anscheinen einen 
#include <time.h> für. Ich bekomme allerdings immer den Fehler: time.h: 
No such file or directory.

Was kann ich machen

Danke im Vorraus

Gruß
pralle_n
OP #3996897
Moin,

danke erst einmal. Jetzt möchte ich die Zufallszahl einer Variable über 
gebn, aber wenn ich "Wert = srand(unsigned int seed);" schreibe bekomme 
ich immer folgenden fehler:

Error 1 expected expression before 'unsigned' 49 19 Zufall


Wie bekomme ich es sonst hin eine Zufallszahl einer Variable zuzuordnen.

Danke und Gruß
pralle_n
#3996957
Nick Pralle schrieb:
> wenn ich "Wert = srand(unsigned int seed);" schreibe

Was soll das denn auch sein? So sieht kein Funktionsaufruf in C aus. 
Vielleicht solltest du deine C Kenntnisse nochmal verbessern bevor du 
dich an Mikrocontroller wagst. Bei einem Mikrocontroller ist natürlich 
die Frage woher man überhaupt den Startwert für den 
Zufallszahlengenerator nehmen soll, da es kaum Parameter gibt, die sich 
bei jedem Start unterscheiden. Dazu hat Gerald ja schon eine Funktion 
verlinked, die einen Wert aus dem nicht initialisierten SRAM generiert. 
Damit kannst du dann srand füttern: srand(get_seed()); Danach sollte 
rand() dann unterschiedliche Werte ausgeben
#3997016
Sebastian V. O. schrieb:
> Nick Pralle schrieb:
>> wenn ich "Wert = srand(unsigned int seed);" schreibe
>
> Was soll das denn auch sein?

Was erwartst du?
Das ist halt immer das Problem mit den "Ich brauch kein C Buch, ich les 
mir alles irgendwie aus dem Web zusammen" Leuten. Kennen ihre 
Programmiersprache nur zu 15% und von dem was sie wissen ist dann auch 
noch mindestens die Hälfte falsch.
#3997029
Sebastian V. O. schrieb:

> die Frage woher man überhaupt den Startwert für den
> Zufallszahlengenerator nehmen soll, da es kaum Parameter gibt, die sich
> bei jedem Start unterscheiden.

Eine andere Idee wäre es, ganz einfach bei jedem Start einen um 1 
erhöhten Seed zu nehmen, den man sich aus dem EEPROM holt bzw. um 1 
erhöht wieder im EEPROM abspeichert.
#3997038
@ Ralf G. (ralg)

>Für'n Flackerlicht wäre mir sowas zufällig genug:

>uint8_t rnd()
>{
>  static uint8_t r;
>  r = r * 17 + 13;
>  return r;
>}

Denkst du die Leute, welche den C-Compiler bzw. die libc geschrieben 
haben sind doof? Die wissen schon, wie man eine PSEUDO-Zufallsfolge 
erzeugt. Man muss halt wissen, was das PSEUDO bedeutet.

Es wird mit gleichem Startwert IMMER die gleiche, vorhersagbare 
Zahlenfolge ausspucken, auch wenn diese sehr lang ist.

Man braucht, um wenigsten einen halbwegs zufälligen Punkt in der 
Zahlenfolge als Startpunkt festzulegen, eine ansatzweise ECHT zufällige 
Zahl. Diese kann man auf vielen Wegen erzeugen. ADC-Rauschen, Dauer von 
Tastendrücken, Echtzeituhr, Temperatur, Wasserstand von Timbuktu, etc.
#3997144
Falk Brunner schrieb:
> Denkst du die Leute, welche den C-Compiler bzw. die libc geschrieben
> haben sind doof? Die wissen schon, wie man eine PSEUDO-Zufallsfolge
> erzeugt. Man muss halt wissen, was das PSEUDO bedeutet.

Hmm. Das liest du da raus? :-/

Nick Pralle schrieb:
> ich möchte aktuell für ein Flackerlich eine Zufallszahl auf dem ATmega8
> generieren lassen.

Und wenn's ihm gefällt, will er's kleiner. Ein Tiny13 ist mit 'rand()' 
halb voll!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.