Numeri random

martedì 11 aprile 2006 - 14.22

kiwi Profilo | Newbie

Salve a tutti, vi spiego un pò la mia situazione tempo fa avevo iniziato a lavorare con VB 6 ed ero riuscita ad ottenere buoni risultati, poi l'ho messo da parte per altri studi e adesso volendo ricominciare mi è venuta la brillante idea di passare direttamente a vb.net cercando di convertire vecchi programmini....una soluzione ottima per ripassare e intanto aggiornare il mio sapere però....ci sono cose abbastanza semplici in cui mi impicco per esempio:

Nella generazione di numeri random è normale che tra 0 e 99 numeri in un ciclo for 1 to 6 la mia applicazione scelga sempre gli stessi numeri nello stesso ordine?
Ho scelto anche diversi metodi per generarlo ma niente.....
Vi ringrazio in anticipo
Sicuramente mi sarò rincretinita io....
il pezzettino di codice:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer

For a = 1 To 6
LabelArray(a).Text = ""
Next


Dim b As Integer
Dim casu As Integer
Dim casu2 As Integer
Dim c As New Random
Dim tmp As Integer
Dim tmp2 As Integer
Dim x As Integer
Dim y As Integer

For b = 1 To 6
tmp = c.Next(50, 99)
tmp2 = c.Next(1, 50)
casu = CInt(Int((50 * Rnd())))
casu2 = CInt(Int((99 * Rnd())) + 1)
x = Int(Rnd() * 4)
y = x
Select Case (y)
Case Is = 0
LabelArray(b).Text = tmp
Case Is = 1
LabelArray(b).Text = tmp2
Case Is = 2
LabelArray(b).Text = casu
Case Is = 3
LabelArray(b).Text = casu2
Case Else
LabelArray(b).Text = casu2


End Select

Next
End Sub

sanbiz Profilo | Senior Member

>Nella generazione di numeri random è normale che tra 0 e 99 numeri
>in un ciclo for 1 to 6 la mia applicazione scelga sempre gli
>stessi numeri nello stesso ordine?
No, non è normale.

Non so cosa debba fare esattamente la tua applicazione, ma togliendo un po' di codice forse è più semplice:

Dim c As New Random
Dim myString As String = Nothing

TV.Nodes.Clear()

For b As Single = 0 To 5
myString = String.Concat(myString, c.Next(99).ToString, " - ")
Next
MsgBox(myString)

/*Output
25 - 96 - 7 - 26 - 70 - 92 -
*/

Non mi sembra che duplichi nulla.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

kiwi Profilo | Newbie

Ti ringrazio per la risposta il programmino è fin troppo banale è del tipo superEnalotto quindi per 6 Label (il for b = 1 to 6) per ogni label mi deve generare un numero casuale tra 1 e 99 il problema non sono le duplicazioni tra le label (cosa che comunque poi dovrò affrontare) cioè del tipo 25-25-7-26-70-92 no no è solo che ogni volta che riavvio l'applicazione dopo averla chiusa mi ripropone sempre le stesse sequenze .....in teoria se è un random dovrebbe cambiare ogni volta, no?
ti riporto un esempio:
-avvio il programma o in debug o in exe
--click sul pulsante
---le prime sequenze:
35-30-76-13-7-92
47-38-23-38-41-64
-chiudo il programma e lo riavvio quindi nuovo giro, nuovi numeri...? NO non tutti!
35-30-76-10-26-89
47-38-23-15-41-75
con il codice più semplice quello della prima stesura con un solo random si era fissato di più uscivano sempre gli stessi ora solo i primi 3 restano sempre uguali....comunque ora provo il tuo codice ti ringrazio ancora, dopo tornerò a disturbare per il ciclo if per controllare se il numero estratto è già uscito nelle label precedenti, ho già provato con un ciclo for each che analizza le label all'interno dell'array ma la variabile for each LAB in LabelArray non me la vede e mi da errore....
grazie ancora a dopo.

ok funziona....semplice e pulito.....meglio così, grazie

Dim b As Integer ' contatore ciclo for
Dim x As New Random 'istanza di random
Dim mystring As String = Nothing 'stringa che valorizzerà la label

For b = 1 To 6
mystring = x.Next(1, 99).ToString()
'esecuzione del random e conversione in stringa
LabelArray(b).Text = mystring
'la label nell'Array corrispondente al contatore b
' assume il valore della variabile mystring
Next
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5