Forum: Compiler & IDEs Erzeugung von Zufallszahlen


von lauser21 (Gast)


Lesenswert?

Hallo,
fast traue ich mir die Frage nicht:
Ich will Zufallszahlen von 0..7 erzeugen und habe das gem. folg. 
Programmausschnitt versucht. Bei der LCD-Ausgabe (Kontrolle) erscheinen 
häufig Werte größer 7. Wo ist mein vielleicht trivialer Denkfehler?

unsigned char test, test1;
  test=rand();
  test &= 0x07;

  lcd_goto(1,1);
  lcd_write_s("+++++");
  lcd_goto(1,1);
  wait_ms(20);
  itoa(test,Buffer,5);
  lcd_write_s(Buffer);
  wait_ms(20);

Alles in einem mega8 mit AVR-Studio 4.13 SP2. Die +-Zeichen sind nur für 
das sichere Überschreiben des Displayinhaltes. Dass Doubletten 
entstehen, ist mir klar.

Vielen Dank
Dieter

von Genmutant (Gast)


Lesenswert?

Weil dus mit itoa in die 5er Basis wandelst und die dezimale 7 in der 
Basis 5 12 ist.

von Edi R. (edi_r)


Lesenswert?

Bei "itoa(test,Buffer,5)" meinst Du mit "5" wohl die Länge des 
Ergebnisses? In Wirklichkeit ist das die Zahlenbasis, mit der 
konvertiert wird. Wenn Du Dezimalzahlen willst, sollte da 10 stehen, in 
diesem Fall kann es auch 8 sein (oktal), weil die Werte nur von 0 bis 7 
gehen.

von lauser21 (Gast)


Lesenswert?

Hallo, Ihr beiden,
ja, man müßte halt lesen können. Nun klappt es.
Vielen Dank und schönen Sonntag noch
Dieter

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
Noch kein Account? Hier anmelden.