Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - di nuovo problemi coi numeri casuali
Forum - C# / VB.NET - di nuovo problemi coi numeri casuali

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 19:13
Lunedì, 13/01/2014
allora, io faccio questo:

Codice sorgente - presumibilmente C++

  1. //istanzio 5 oggetti della classe Dado
  2.                         Dado dado1 = new Dado(6);
  3.                         Dado dado2 = new Dado(6);
  4.                         Dado dado3 = new Dado(6);
  5.                         Dado dado4 = new Dado(6);
  6.                         Dado dado5 = new Dado(6);
  7.                         //lancio i dadi
  8.                         risultato1 = dado1.LancioDado();
  9.                         risultato2 = dado2.LancioDado();
  10.                         risultato3 = dado3.LancioDado();
  11.                         risultato4 = dado4.LancioDado();
  12.                         risultato5 = dado5.LancioDado();
  13.                         //stampo i risultati
  14.                         Console.WriteLine(risultato1 + " " + risultato2 + " " + risultato3 + " " + risultato4 + " " + risultato5 + "\n\n");
  15.  
  16.  
  17. public int LancioDado()
  18.         {
  19.             Random rnd = new Random();
  20.  
  21.             int risultato = rnd.Next(1, numeroFacce + 1);
  22.  
  23.             return (risultato);
  24.         }



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
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:35
Lunedì, 13/01/2014
Ti basta un solo dato. Oltre a questo:

Codice sorgente - presumibilmente C# / VB.NET

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



Il mio blog: https://piero.dev
PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 20:12
Lunedì, 13/01/2014
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.

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 20:36
Lunedì, 13/01/2014
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
PM Quote
Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 327
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 21:58
Lunedì, 13/01/2014
Ma era tanto difficile usare direttamente Random?

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 0:11
Martedì, 14/01/2014
Questa è la mia classe Dado:

Codice sorgente - presumibilmente C++

  1. public class Dado
  2.     {
  3.         int numeroFacce;
  4.  
  5.         public Dado(int n)
  6.         {
  7.             numeroFacce = n;
  8.         }
  9.  
  10.         public int LancioDado()
  11.         {
  12.             Random rnd = new Random();
  13.  
  14.             int risultato = rnd.Next(1, numeroFacce + 1);
  15.  
  16.             return (risultato);
  17.         }
  18.     }



Se metto System.currentTimeMillis()  mi da errore con lo using; quale dovrei usare?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 6:03
Martedì, 14/01/2014
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: https://piero.dev
PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 11:24
Martedì, 14/01/2014
Codice sorgente - presumibilmente C# / VB.NET

  1. //istanzio 5 oggetti della classe Dado
  2.                         Dado dadoMio = new Dado(6);
  3.                      
  4.                         //lancio il dado 5 volte
  5.                         risultato1 = dadoMio.LancioDado();
  6.                         risultato2 = dadoMio.LancioDado();
  7.                         risultato3 = dadoMio.LancioDado();
  8.                         risultato4 = dadoMio.LancioDado();
  9.                         risultato5 = dadoMio.LancioDado();
  10.                         //stampo i risultati
  11.                         Console.WriteLine(risultato1 + " " + risultato2 + " " + risultato3 + " " + risultato4 + " " + risultato5 + "\n\n");



If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 14:20
Martedì, 14/01/2014
Testo quotato

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
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo