Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303

    [VB.Net]Escludere dei numeri

    ho trovato questo codice in rete che praticamente non fà altro che generare dei numeri casuali.
    il punto è questo:
    è possibile escludere dei numeri nel processo di generazione magari separati da ","?

    codice:
      Dim NSest(0 To 5) As Byte 'Array rappresentante la sestina
    
        Function diverso() As Boolean
            Dim i1 As Byte
            Dim j1 As Byte
            diverso = True
            For i1 = 0 To 4
                For j1 = i1 + 1 To 5
                    If NSest(i1) = NSest(j1) Then
                        diverso = False
                        Exit Function
                    End If
                Next
            Next
        End Function
    codice:
     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Dim i, j As Byte
            Dim app As Byte
            Dim r As New Random(CInt(Date.Now.Ticks And Integer.MaxValue))
            Application.DoEvents()
            For i = 0 To 5
                NSest(i) = r.Next(1, 90)
            Next
            Do
                For i = 0 To 4
                    For j = i + 1 To 5
                        If NSest(i) = NSest(j) Then
                            Do
                                NSest(j) = r.Next(1, 90)
                            Loop Until NSest(i) <> NSest(j)
                        End If
                    Next
                Next
            Loop Until diverso() = True
            For i = 0 To 4
                For j = i + 1 To 5
                    If NSest(i) > NSest(j) Then 'Ordino i numeri in ordine crescente
                        app = NSest(i)
                        NSest(i) = NSest(j)
                        NSest(j) = app
                    End If
                Next
            Next
            'assegno alle 6 label i numeri ottenuti
            lblN1.Text = NSest(0)
            lblN2.Text = NSest(1)
            lblN3.Text = NSest(2)
            lblN4.Text = NSest(3)
            lblN5.Text = NSest(4)
            lblN6.Text = NSest(5)
    
            If Lbltempo.Text = TextBox1.Text Then
                Timer1.Stop()
                Lbltempo.Text = 0
                Timertempo.Stop()
            End If
        End Sub

  2. #2

  3. #3
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da gibra
    Ovviamente, sì.
    Grazie
    per il sugerimento...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    Direi che puoi semplicemente creare un vettore contenente i numeri che ti servono, anche in ordine, prelevare dal vettore stesso il numero corrispondente ad un elemento la cui posizione è scelta casualmente e rimuovere poi dal vettore l'elemento scelto.
    La posizione sarà un numero casuale generato da un range che andrà da zero alla lunghezza del vettore (che sarà di volta in volta minore).
    In questo modo non avrai bisogno di fare alcun confronto per l'esclusione e avrai 6 numeri casuali non ripetuti.

  5. #5
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da Janx
    Direi che puoi semplicemente creare un vettore contenente i numeri che ti servono, anche in ordine, prelevare dal vettore stesso il numero corrispondente ad un elemento la cui posizione è scelta casualmente e rimuovere poi dal vettore l'elemento scelto.
    La posizione sarà un numero casuale generato da un range che andrà da zero alla lunghezza del vettore (che sarà di volta in volta minore).
    In questo modo non avrai bisogno di fare alcun confronto per l'esclusione e avrai 6 numeri casuali non ripetuti.
    puoi farmi un esempio? :master:

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    Certo... anche se ha poco significato se non è chiaro il meccanismo....

    codice:
    Dim Numeri As New ArrayList 
    For i = 1 To 90 
        Numeri.Add(i) 
    Next 
    
    Dim Estrazione(5) As Integer 
    Dim Posizione As Integer = 0 
    Randomize() 
    
    For i = 0 To Estrazione.Length - 1 
        Posizione = New Random().Next(Numeri.Count - 1) 
        Estrazione(i) = Numeri(Posizione) 
        Numeri.RemoveAt(Posizione) 
        System.Threading.Thread.Sleep(50) 
    Next 
    
    Array.Sort(Estrazione) '-> Nel caso ti occorra ordinare i numeri
    Facci sapere...

  7. #7
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da Janx
    Certo... anche se ha poco significato se non è chiaro il meccanismo....

    codice:
    Dim Numeri As New ArrayList 
    For i = 1 To 90 
        Numeri.Add(i) 
    Next 
    
    Dim Estrazione(5) As Integer 
    Dim Posizione As Integer = 0 
    Randomize() 
    
    For i = 0 To Estrazione.Length - 1 
        Posizione = New Random().Next(Numeri.Count - 1) 
        Estrazione(i) = Numeri(Posizione) 
        Numeri.RemoveAt(Posizione) 
        System.Threading.Thread.Sleep(50) 
    Next 
    
    Array.Sort(Estrazione)
    Facci sapere...
    il meccanismo è quello descritto all'inizio del post.
    in più inserisco una textbox dove all'interno inserisco i numeri da escludere separati da virgola.
    il codice postato da te come lo adatto? :master:

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    Il meccanismo a cui mi riferisco è il mio meccanismo.
    Puoi prendere il codice e incollarlo, ma ciò che conta "dovrebbe" essere il ragionamento....
    Io ho ragionato come se dovessi fare un'estrazione numerica giocando a tombola.
    Estrai un numero a caso dalla busta e lo poggi sul tabellone, tale numero non sarà più dentro la busta, quindi non potrai ripescarlo

    Comunque...
    Estrazione è un vettore di 6 elementi.
    Una volta eseguite le istruzioni avrai a disposizione 6 numeri casuali (ordinati o meno)
    che puoi recuperare in modo banale:

    lblN1.Text = Estrazione (0)
    blN2.Text = Estrazione (1)

    ecc..

    Ok?

    P.S. credo non sia necessario quotare tutto il messaggio, specialmente se il tuo messaggio è riferito all'intervento precedente

  9. #9
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da Janx
    Il meccanismo a cui mi riferisco è il mio meccanismo.
    Puoi prendere il codice e incollarlo, ma ciò che conta "dovrebbe" essere il ragionamento....
    Io ho ragionato come se dovessi fare un'estrazione numerica giocando a tombola.
    Estrai un numero a caso dalla busta e lo poggi sul tabellone, tale numero non sarà più dentro la busta, quindi non potrai ripescarlo

    Comunque...
    Estrazione è un vettore di 6 elementi.
    Una volta eseguite le istruzioni avrai a disposizione 6 numeri casuali (ordinati o meno)
    che puoi recuperare in modo banale:

    lblN1.Text = Estrazione (0)
    blN2.Text = Estrazione (1)

    ecc..

    Ok?

    P.S. credo non sia necessario quotare tutto il messaggio, specialmente se il tuo messaggio è riferito all'intervento precedente
    a ok...
    ma io non chiedevo questo.
    io chiedevo come escludere alcuni numeri dal ciclo!

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    Forse non ho capito....
    Devi escludere alcuni numeri, giusto?
    Qual'è il criterio di esclusione?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.