14/01/14 13:20
Poggi Marco
Postato originariamente da Dice:Questa è la mia classe Dado:
Codice sorgente - presumibilmente C++
public class Dado
{
int numeroFacce;
public Dado(int n)
{
numeroFacce = n;
}
public int LancioDado()
{
Random rnd = new Random();
int risultato = rnd.Next(1, numeroFacce + 1);
return (risultato);
}
}
Se metto System.currentTimeMillis() mi da errore con lo using; quale dovrei usare?
Si potrebbe dichiarare un oggetto statico del tipo random, comune a tutte le istanze della classe, invece che una variabile locale nel metodo LancioDado().
Ultima modifica effettuata da Poggi Marco 14/01/14 13:23
aaa
14/01/14 14:59
tuttodiMC
Esattamente come ha detto Poggi Marco, dovresti mettere la variabile rnd al di fuori del metodo in modo da non crearla nuovamente quando riutilizzi il metodo. In questo modo tu hai tirato fuori lo stesso problema dell'altra discussione, ovvero, che inizializzavi più dadi con lo stesso seme.
aaa
14/01/14 19:46
ZioCrocifisso
In quel post non ho scritto solo di usare un'istanza di Dado, ma anche di conservare Random, invece di crearne uno per ogni chiamata a LancioDado. Mettilo dunque come campo di Dado, e crealo nel costruttore.
Ti ho anche spiegato il motivo per cui facendo come hai fatto tu non funziona, che probabilmente spiega anche perché col debugger ti funziona e senza no: eseguendo il programma passo passo, i vari Random vengono creati in momenti diversi, e quindi con un diverso seed.
Ultima modifica effettuata da ZioCrocifisso 14/01/14 19:48
aaa