Oppure

Loading
13/01/14 18:13
Dice
allora, io faccio questo:

//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 13/01/14 18:18
aaa
13/01/14 18:35
pierotofy
Ti basta un solo dato. Oltre a questo:

Random rnd = new Random(System.currentTimeMillis());


en.wikipedia.org/wiki/…
Il mio blog: piero.dev
13/01/14 19:12
ZioCrocifisso
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.
aaa
13/01/14 19:36
Poggi Marco
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 13/01/14 19:37
aaa
13/01/14 20:58
tuttodiMC
Ma era tanto difficile usare direttamente Random?
aaa
13/01/14 23:11
Dice
Questa è la mia classe Dado:

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?
aaa
14/01/14 5:03
pierotofy
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.
Il mio blog: piero.dev
14/01/14 10:24
Ultimo
//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