Es ist einfach, eine Nummer innerhalb des Bereichs [0, 255]
zu erstellen.
Es ist leicht zu erkennen, ob k > 255*n
oder k < 0
keine Lösung gibt.
Wenn 0 <= k <= 255*n
, die Lösung existiert. Hier reden wir nur über n > 1
Zustand.
Sie n-1
Zufallszahlen erzeugt haben, und die Summe der n-1
Zahlen s1
an, dass die n-te Zahl x
ist. Also s1 + x = k
, und x sollte [0, 255]
sein. Wenn die n-1
Nummern alle innerhalb des Bereichs [0, a]
sind, dann (n-1)*a + 255 >= k
, erhalten wir a >= (k-255)/(n-1)
.
Wenn k > 255
, lassen Sie einfach a = (k-255)/(n-1)
. Es bedeutet s1
ist [0, k-255]
. Dann kann die n-te Nummer x
eine beliebige Zahl innerhalb [0, 255]
sein. Also die Lösung ist willkürlich wählen Sie n-1
Zahlen innerhalb von [0, (k-255)/(n-1)]
(Sie wissen (k-255)/(n-1) <= 255
, damit es Ihren Zustand erfüllt), und wählen Sie eine zufällige Zahl innerhalb [0, 255]
.
Wenn k <= 255
, willkürliche wählen n
Zahlen jeweils innerhalb [0, k/n]
(Sie wissen k/n
innerhalb [0, 255]).
Problem mit dieser Methode ist, wenn '-s1 <0' und/oder' k - s1> 255'. – pmg
Aber ich brauche alle Zahlen innerhalb 0x00-0xFF .... jemand war schneller ;-) – Moeder
@pmg Bitte sehen Sie meine aktualisierte Antwort. – coderz