Mit dem XorShift-Zufallszahlengenerator ... Ich habe bereits den Generator, aber ich war nicht in der Lage, es zu ändern, um eine Zahl zwischen 0 und einer oberen Grenze (wie die nextInt()
Methode in der Java Random Klasse).Generieren einer Zufallszahl zwischen 0 und x (Java)
long seed = System.nanoTime();
int next(int nbits) {
long x = seed;
x ^= (x << 21);
x ^= (x >>> 35);
x ^= (x << 4);
seed = x;
x &= ((1L << nbits) -1);
return (int) x;
}
Irgendwelche Ideen?
Können Sie '((int) x)% (upper_limit + 1)'? (Das ist eine aufrichtige Frage; ich weiß nicht genug über die Eigenschaften von Xorshift - insbesondere darüber, wie viel Entropie es in den unteren Bits hat - zu wissen, ob das eine gute Idee ist.) – ruakh
Verwenden Sie die Restfunktion - n% x –
Ich dachte darüber nach, aber ich hatte das Gefühl, dass dies die kryptographische Stärke beeinflussen würde. Gibt es keinen Grund, warum es sich darauf auswirken sollte? – ppepper