Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
allora, io faccio questo:
Codice sorgente - presumibilmente C++ |
//istanzio 5 oggetti della classe Dado Dado dado1 = new Dado(6); Dado dado2 = new Dado(6); Dado dado3 = new Dado(6); Dado dado4 = new Dado(6); Dado dado5 = new Dado(6); //lancio i dadi risultato1 = dado1.LancioDado(); risultato2 = dado2.LancioDado(); risultato3 = dado3.LancioDado(); risultato4 = dado4.LancioDado(); risultato5 = dado5.LancioDado(); //stampo i risultati Console.WriteLine(risultato1 + " " + risultato2 + " " + risultato3 + " " + risultato4 + " " + risultato5 + "\n\n"); public int LancioDado() { Random rnd = new Random(); int risultato = rnd.Next(1, numeroFacce + 1); return (risultato); }
|
Il mio problema è che alla fine ricavo 5 volte lo stesso risultato, quando io invece voglio 5 numeri diversi.
Per caso basta che istanzio un unico oggetto dado e utilizzo 5 volte il metodo di questo oggetto?
Ho appena provato a fare come pensavo, ma non va bene
Come devo fare???
Ultima modifica effettuata da Dice il 13/01/2014 alle 19:18 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Ti basta un solo dato. Oltre a questo:
Codice sorgente - presumibilmente C# / VB.NET |
Random rnd = new Random(System.currentTimeMillis());
|
|
|
ZioCrocifisso (Member)
Pro
Messaggi: 135
Iscritto: 06/03/2013
|
Conserva l'oggetto Random su Dado (creato nel costruttore) e usalo su LancioDado, usando un solo dado, perché creando più oggetti Random nello stesso istante li crei tutti con lo stesso seme, e quindi generano la stessa sequenza.
|
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
Ciao!
Come hai definito la classe Dado?
E' possibile stanziare solo un oggetto Dado, che al suo interno contenga un oggetto Random ?
Ultima modifica effettuata da Poggi Marco il 13/01/2014 alle 20:37 |
|
tuttodiMC (Normal User)
Expert
Messaggi: 327
Iscritto: 29/10/2012
|
Ma era tanto difficile usare direttamente Random?
|
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
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?
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Ups! Scusami, pensavo si parlava di Java (non ho visto che eravamo nella sezione .NET). In questo caso non ti serve inizializzare un seme, basta che usi una sola istanza di Random invece che multiple.
|
|
Ultimo (Member)
Guru
Messaggi: 877
Iscritto: 22/05/2010
|
Codice sorgente - presumibilmente C# / VB.NET |
//istanzio 5 oggetti della classe Dado
Dado dadoMio = new Dado(6);
//lancio il dado 5 volte
risultato1 = dadoMio.LancioDado();
risultato2 = dadoMio.LancioDado();
risultato3 = dadoMio.LancioDado();
risultato4 = dadoMio.LancioDado();
risultato5 = dadoMio.LancioDado();
//stampo i risultati
Console.WriteLine(risultato1 + " " + risultato2 + " " + risultato3 + " " + risultato4 + " " + risultato5 + "\n\n");
|
If ok Then GOTO Avanza else GOTO Inizia
|
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
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 il 14/01/2014 alle 14:23 |
|