Zufallszahl beim ATmega8

OP #3995269
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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.
#3997038
Lesenswert?
• ▲
▼
@ 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
Lesenswert?
• ▲
▼
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

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.

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.