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?
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.
> Die 3 Variablen durch ausmaskieren von Bits aus der einen Zahl > erzeugen? Das würd ich gern machen. Weiß nur nicht wie....;-(
> 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.
> 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.
Thomas, Mit ner division hast du oberste Stelle immer null. wenn Du 3 bytes haben willst solltest du 3 bytes nehmen. Byte 1 = Random; Byte 2 = Random; Byte 3 = Random; rene
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.