1 Byte auf 3 Byte aufteilen

Gast #502443
Lesenswert?
• ▲
▼
Hallo,

ich habe mir eine 8-Bit Zufalllsvariable erzeugt. Diese möchte ich nun 
auch zufällig auf 3 Bytes aufteilen.

Ich hätte das nun so getan:

Variable == ?;    //Variable wurde mit einem Zufallswert erzeugt

Byte 1 = Variable / 2;
Byte 2 = Byte1 / 2;
Byte 3 = Byte2 / 2;


Hat jemand noch ne andere Idee?
#502447
Lesenswert?
• ▲
▼
3 Zufallsvariablen erzeugen?
Anstatt der Divisionen irgendwelche andere Operationen nehmen?
Die 3 Variablen durch ausmaskieren von Bits aus der einen Zahl
erzeugen?

Wenn ich noch 30 Sekunden länger nachdenke, fallen mir sicher
noch viele andere Möglichkeiten ein.

Wo liegt den das Problem? Wenn deine Lösung dein Problem
löst, ist es doch gut.
Gast #502455
Lesenswert?
• ▲
▼
> Diese möchte ich nun auch zufällig auf 3 Bytes aufteilen.

Wo ist die vorgeschlagene Lösung "zufällig"? Dir ist auch klar, dass die 
Lösung den Wertebereich deiner drei "Zufallszahlen" stark asymmetrisch 
gestaltet. Soll der also ähnlich sein muss man sich zwar Bits aus der 
Quelle maskieren, aber in der Wertigkeit korrigieren.

Nimm drei Zufallszahlen oder erkläre, was eigentlich zu erreichen ist.
Gast #502468
Lesenswert?
• ▲
▼
> Das würd ich gern machen. Weiß nur nicht wie....;-(

Also, einzelne Bits maskieren geht einfach durch ver-UND-ung mit einer 
Bitmaske.

Var1 = Master & 0b00000011
Var2 = Master & 0b00001100
Var3 = Master & 0b00110000

Problem ist dann (evtl.), dass Var1 von 0..3 geht, Var2 von 4..12 
(allerdings in 4er Sprüngen). Das kann ja unter Umständen nicht 
gewünscht sein. Also muss die Wertigkeit noch berücksichtigt werden, z. 
B. mit:

Var1 = Master & 0b00000011
Var2 = (Master & 0b00001100) >> 2
Var3 = (Master & 0b00110000) >> 4

Du siehst allerdings auch, dass nur zwei Bit pro Variable übrigbleiben 
(8/3 eben). So besonders tolle Zufallszahlen sind das also 
möglicherweise auch nicht.

Man könnte natürlich hergehen und mehr Bits verwenden, aber dann müsste 
man die doppelt nutzen, was schlussendlich die drei Zufallsgrößen in 
einem gewissen Maße korrelieren würde.

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.