2010-12-02 10 views
1

J'ai un petit problème conceptuel.Java: Random setSeed

J'ai besoin de semer mon aléatoire de sorte que je reçois toujours le même radom quand je recharge mes niveaux. Par conséquent, je dois utiliser Random#setSeed.

Le problème que j'ai est alors que je dois alors faire une

Random r = new Random(); 
r.setSeed(currentSeed); 

Le problème est que je puis passer a/chercher cette instance de r dans mon code.

Je voudrais savoir s'il est proche de la solution C:

Math.Random(currentSeed); 

Le plus proche que j'ai maintenant:

ClassA: 
    public static Random r; 
    private int currentSeed = ...; 
    initRandom(){ 
    r = new Radom(currentSeed); 
    } 

ClassB: 
    ... 
    //instead of Math.random(); 
    r.random(); 
    ... 

Mais cela ne semble pas très agréable.

Des idées?

Répondre

1

Oui, vous devez passer la même instance aléatoire, soit en tant que paramètre, soit au moyen d'une variable globale (variable statique ou singleton).

0

Si vous utilisez la même variable aléatoire et que vous voulez la reproduire, vous devez vous assurer qu'elle est utilisée dans le même ordre. Si vos cours s'exécutent dans un ordre différent, par exemple si son multi-thread vous obtiendrez un résultat différent.

+0

Pas de multithread, lecture d'un xml et strored dans une liste donc je toujours t le même ordre ^^ –