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 If Return True End Function |
Pegue o código completo do projeto aqui: WFVB_Random.zip
Por hoje é só isto...
Até mais
Gostou ? Compartilhe no Facebook 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