Pourquoi n'ont - 181783497276652981
et 8682522807148012
choisi en Random.java
?
Voici le code source correspondant de Java SE JDK 1.7:
/**
* Creates a new random number generator. This constructor sets
* the seed of the random number generator to a value very likely
* to be distinct from any other invocation of this constructor.
*/
public Random() {
this(seedUniquifier() ^ System.nanoTime());
}
private static long seedUniquifier() {
// L'Ecuyer, "Tables of Linear Congruential Generators of
// Different Sizes and Good Lattice Structure", 1999
for (;;) {
long current = seedUniquifier.get();
long next = current * 181783497276652981L;
if (seedUniquifier.compareAndSet(current, next))
return next;
}
}
private static final AtomicLong seedUniquifier
= new AtomicLong(8682522807148012L);
Donc, en invoquant new Random()
sans aucune graine de paramètres prend le courant "de la graine uniquifier" et XORs il avec System.nanoTime()
. Il utilise ensuite l' 181783497276652981
pour créer une autre graine uniquifier être conservées pour la prochaine fois new Random()
est appelé.
Les littéraux 181783497276652981L
et 8682522807148012L
ne sont pas placés dans des constantes, mais ils n'apparaissent pas n'importe où ailleurs.
Au premier abord, le commentaire donne-moi un facile. Recherche en ligne pour que l'article rendements de l'article. 8682522807148012
n'apparaît pas dans le livre, mais 181783497276652981
n'apparaissent que comme un sous-chaîne d'un autre nombre, 1181783497276652981
, ce qui est 181783497276652981
avec un 1
ajouté.
Le rapport affirme que l' 1181783497276652981
est un nombre qui donne de bons "mérite" pour un générateur linéaire à congruence. A ce nombre tout simplement mal copié dans Java? N' 181783497276652981
ont un niveau acceptable de mérite?
Et pourquoi était - 8682522807148012
- il choisi?
Recherche en ligne pour nombre donne aucune explication, seulement cette page qui remarque également la tombée 1
face 181783497276652981
.
D'autres chiffres ont été retenus qui aurait fonctionné aussi bien que ces deux nombres? Pourquoi ou pourquoi pas?