VB .NET - Gerando números aleatórios
|  | Neste artigo vou apresentar os conceitos básicos relativos a geração de números aleatórios no VB .NET. |  | 
Gerar números aleatórios no Visual Basic .NET é muito simples. Para fazer o serviço usamos a classe Random.
A classe Random representa um pseudo gerador de números aleatórios que usa o Namespace : System.
System é o Namespace principal que inclui as principais definições de tipos de dados básicos : strings , arrays , eventos , exceções , etc...
O objetivo é gerar um único número aleatório entre dois números informados e também gerar números para o intervalor de números indicados.
Para tornar o código mais simples possível eu não fiz um tratamento de erros muito rigoroso.
Vamos ao projeto:
- Inicie um novo projeto no Visual Studio com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
| 
 O layout do formulário é esta exibido ao lado. | 
		 | 
Para atribuir um valor inicial podemos usar o evento Load do formulário:
| Private Sub Form1_Load(sender As 
		Object, e As EventArgs) Handles MyBase.Load txtInf.Text = 1 txtSup.Text = 100 End Sub | 
Para permitir somente valores números nas caixas de texto inclua no evento KeyPress de cada uma das caixas de texto txtInf.Text e txtSup.Text o código abaixo:
|  Private Sub txtInf_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtInf.KeyPress
        If Not Char.IsDigit(e.KeyChar) And Not Convert.ToInt32(e.KeyChar) = Keys.Back And
   Not Convert.ToInt32(e.KeyChar) = Keys.Delete Then
            e.Handled = True
        End If
    End Sub    Private Sub txtSup_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtSup.KeyPress
        If Not Char.IsDigit(e.KeyChar) And  Not Convert.ToInt32(e.KeyChar) = Keys.Back And
   Not Convert.ToInt32(e.KeyChar) = Keys.Delete Then
            e.Handled = True
        End If
    End Sub | 
O código do evento Click do botão de comando : btnGerar é o seguinte:
| Private Sub btnGerar_Click(sender As Object, e As EventArgs) Handles btnGerarNumero.Click         If Validacao() Then
            Dim numero As Integer
            Dim GeradorDeNumerosAleatorios As Random = New Random()            If Not String.IsNullOrEmpty(txtInf.Text) Then
                numero = GeradorDeNumerosAleatorios.Next(txtSup.Text)
            Else
                numero = GeradorDeNumerosAleatorios.Next(txtInf.Text, txtSup.Text)
            End If
            lbResultado.Items.Add(numero)
        End If
    End Sub | 
- Como funciona ?
A sintaxe usada pode ser:
1 - GeradorDeNumerosAleatorios.Next(valor) - gera um número aleatório entre 0 e valor + 1
2- GeradorDeNumerosAleatorios.Next(valor1 , valor2 ) - gera um número aleatório entre valor1 e valor2+1
Para gerar números entre um intervalo inclua mais um botão de comando no formulário chamado btnGerarNumeros e inclua o código abaixo no seu evento Click:
| Private Sub btnGerarNumeros_Click(sender As Object, e As EventArgs) Handles btnGerarNumeros.Click
        If Validacao() Then
            Dim min As Integer = CInt(txtInf.Text)
            Dim max As Integer = CInt(txtSup.Text)Dim numeros(max) As Integer lbResultado.Items.Clear()             For i As Integer = 0 To numeros.Length - 1
                numeros(i) = GetRandom(min, max)
                lbResultado.Items.Add(numeros(i))
            Next
        End If
    End Sub | 
Defina a seguir o método GetRandom() :
| Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer
        ' fazendo o Gerador static, preservamos a mesma instância
        ' assim não precisamos criar novas instância com a mesma semente 
        ' entre as chamadas
        Static Gerador As System.Random = New System.Random()
        Return Gerador.Next(Min, Max)
    End Function | 
Defina também o método Validacao() :
| Private Function Validacao() As Boolean         If String.IsNullOrEmpty(txtInf.Text) Or String.IsNullOrEmpty(txtSup.Text) Then
            MessageBox.Show("Informe um valor para o intervalo")
            Return False
        End If        Dim min As Integer = CInt(txtInf.Text)
        Dim max As Integer = CInt(txtSup.Text)        If max < min Then
            MessageBox.Show("O valor máximo deve ser maior que o valor minimo")
            Return False
        End IfReturn True End Function | 
Pegue o código completo do projeto aqui: 
  
			 WFVB_Random.zip
 
WFVB_Random.zip
Por hoje é só isto...
Até
mais 
  Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
	
	
	VB - 
                  Criptografia e segurança. É possivel.? 
VB.NET 
                - Criptografando arquivos
  ASP.NET - Usando 
  Criptography Application Block
                        VB.NET  - 
                        Gerando Hash e comparando arquivos
José Carlos Macoratti