Newsgroup: it.comp.lang.visual-basic
Titolo: Per le matrici adesso è Ok , però ...

Ciao a tutti,
Questi 2 cicli :
 
        For j = 0 To 5
            numero = istance.Next(1, 91)
            serie1(j).Text = numero
        Next j
        For j2 = 0 To 5
            numero2 = istance2.Next(1, 91)
            serie2(j2).Text = numero2
        Next j2
scrivono numeri random nelle matrici di Terxt Box Serie1 e Serie2 per poi
essere visualizzati nella form.
Ci credete se vi dico che quando il programma è sotto Debug, la serie di
nuimeri 1 è diversa dalla 2 e quando invece non è in debug, mi mette i
valori uguali in tutte e 2 le serie ?
Perchè secondo voi ?
Istance ed Istance2 sono definite come new Random (che io sappia è l'unico
modo per creare numeri interi casuali , giusto?)
Ah ... il codice è legato ad un command button
grazie a tutti
Zorro
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 modo per creare numeri interi casuali , giusto?)
Scusa, ma perché usi due istanze diverse di Random? Usane una sola, e 
richiama il metodo Next ogni volta che vuoi generare un numero casuale.
Magari le due istanziazioni sono troppo vicine, e i due oggetti prendono 
lo stesso seme.
usane uno solo, e magari passagli al costruttore un seme sicuro, preso 
dal clock del PC, tenendo conto che il seme deve essere un intero. Esempio:
Dim rnd As New Random(CInt(DateTime.Now.Ticks And Integer.MaxValue))
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

 Dim rnd As New Random(CInt(DateTime.Now.Ticks And Integer.MaxValue))
Ne ho messe 2 proprio perchè pensavo facesse casino ad usarne 1 per 2 cicli.
Ma la cosa davvero strana è che se lo fermo su una riga di codice dal Debug,
e poi eseguo una riga alla volta, le due serie da 6 numeri sono diverse.
Senza Debug la seconda serie è ugauale alla prima.
L'istruzione che mi hai scritto tu , purtroppo non mi serve perchè devo
generare numeri da1 a 90


 generare numeri da1 a 90
L'istruzione che ho dato io è solo un buon modo per passare un seme il 
più casuale possibile. Per generare i numeri invece fai come hai fatto 
tu, che va bene.


 ha
scritto:

Hai ragione, funziona.
La cosa che però non riesco a capire è se cambia di molto il definire la
classe New Random con il parametro Date oppure definirla solo come New
Random.
Non ho le basi sul random: cosa intendi per 2 semi diversi e 2 algoritmi
diversi
Ormai questa cosa mi ha incuriosito.
Ah! grazie mille per avermi risolto il problema , mi sei stato di grande
aiuto


 diversi
L'algoritmo di generazione dei numeri pseudo-casuali parte da un seme 
(in questo caso da un numero intero) per generare le sequenza. Se tu 
inizializzi l'algoritmo sempre con lo stesso seme, otterrai 
inevitabilmente sempre la stessa sequenza.
Se io faccio:
Dim rnd As New Random(123)
MessageBox.Show(rnd.Next().ToString())
Ogni volta che lo eseguo otterrò lo stesso numero, perché lui parte 
sempre col seme 123.
Se invece gli passo un valore preso dal clock, che cambia in 
continuazione, e che non conosco a priori, allora ho molte più 
probabilità di generare numeri sempre diversi.
Esempio semplice:
Dim rnd As New Random(Now.Millisecond)
MessageBox.Show(rnd.Next().ToString())
Non è il massimo, ma è per far capire.
A questo punto se io faccio:
Dim rnd1 As New Random(Now.Millisecond)
Dim rnd2 As New Random(Now.Millisecond)
Cosa succede se entrambe le istruzioni vengono eseguite in meno di un 
millisecondo? Succede che sia rnd1 che rns2 sono stati istanziati con lo 
stesso seme (lo stesso millisecondo) e quindi genereranno sequenze 
identiche.
Se invece faccio una cosa tipo:
Dim rnd1 As New Random(Now.Millisecond)
Dim rnd2 As New Random(Now.Millisecond * 2)
Già ho passato due semi diversi, e ottengo sequenze diverse.
Spero di essere stato abbastanza chiaro :-)
PS
Io ti consiglio di usare la forma che ti ho indicato nel post 
precedente, perché è abbastanza sicura.
PPS
Ti consiglio anche di impostare Option Strict a ON. In questo modo sei 
costretto a esplicitare tutte le conversioni, ma il tuo codice sarà 
molto più sicuro, ed eviterai molti possibili errori.


 un seme ragionevole come ti ho già mostrato :-)
Va bene... non ho resistito, e sono andato a spiare la classe Random con 
  Reflector :-)
Il costruttore predefinito, se non specifichi esplicitamente un seme, 
passa come seme Environment.TickCount.


 ha
scritto:

Sei statoi chiarissimo
Grazie mille , mi hai dato un grande aiuto
