Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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


La vita è un biscotto ma se piove si scioglie !!!
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
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());



Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
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: 950
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


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 318
Iscritto: 29/10/2012

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


Assembly is the way
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?


La vita è un biscotto ma se piove si scioglie !!!
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
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.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
Ultimo (Member)
Expert


Messaggi: 513
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");



Ultimo (Hai voluto la bicicletta ? ....)

Studiare LINQ, WPF, ASP.NET MVC, Entity Framwork, C#, Blend, XAML, Javascript, HTML5, CSS .....(tanta roba)

https://www.dropbox.com/s/c2aots5x4urgbhf/setup_game_sudoku ...
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
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


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo