Gerando números aleatórios

Postado por Lucio em 21 de janeiro de 2010

Vamos aprender hoje como gerar números aleatórios utilizado o VB.NET de um jeito fácil e rápido utilizando a classe Random.

Bem, vamos ao projeto!

1. Abra o Visual Studio e crie um novo projeto do tipo Windows Forms Application.

2. Renomeie o projeto para NumeroRandomico.

3. Coloque os seguintes controles em seu form:

· (5x) Label

· (5x) TextBox

· (1x) Button

4. Edite as seguintes propriedades dos controles, conforme a tabela:

CONTROLE NAME TEXT
TextBox1 txtNumeroAleatorio1 <Em branco>
TextBox2 txtNumeroAleatorio2 <Em branco>
TextBox3 txtNumeroAleatorio3 <Em branco>
TextBox4 txtNumeroAleatorio4 <Em branco>
TextBox5 txtNumeroAleatorio5 <Em branco>
Label1 lblGrupo1 Grupo 1
Label2 lblGrupo2 Grupo 2
Label3 lblGrupo3 Grupo 3
Label4 lblGrupo4 Grupo 4
Label5 lblGrupo5 Grupo 5
Button1 btnExecutar Executar
Form1 frmPrincipal Gerador de números aleatórios

5. Organize-os da seguinte forma:

clip_image001

6. Importe a seguinte classe no início do projeto:

Imports System.Random

7. Vamos criar a seguinte função dentro do frmPrincipal.class

Public Function NumeroRandomico(ByVal semente As Integer, ByVal valorMinimo As Integer, ByVal valorMaximo As Integer) As Integer
 
'CRIANDO : OBJETO RANDOM (GERADOR DE NÚMEROS ALEATÓRIOS).
 
Dim Randomico As New Random(Semente)
 
'RETORNANDO : NÚMERO ALEATÓRIO.
 
Return Randomico.Next(valorMinimo, valorMaximo)
 
End Function

8. Agora vamos colocar dentro do controle btnExecutar o código que irá chamar a função e executar o processo:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExecutar.Click
 
'CRIANDO : VARIÁVEIS NECESSÁRIAS
 
Dim Semente As Integer
 
Dim ValorMinimo As Integer
 
Dim ValorMaximo As Integer
 
Dim Numero(4) As Integer
 
Dim Contador As Integer
 
'ARMAZENANDO : VALOR MÍNIMO DE INTERVÁLO DESEJADO.
 
ValorMinimo = CType(InputBox("Insira o valor de intervalo mínimo", "Gerador de números aleatórios", ""), Integer)
 
'ARMAZENANDO : VALOR MÁXIMO DE INTERVÁLO DESEJADO.
 
ValorMaximo = CType(InputBox("Insira o valor de intervalo máximo", "Gerador de números aleatórios", ""), Integer)
 
'EXECUTANDO : GERADOR DE NÚMEROS ALEATÓRIOS.
 
For Contador = 0 To 4 Step 1
 
Semente = CType(Date.Now.Ticks And Integer.MaxValue, Integer)
 
Numero(Contador) = NumeroRandomico((Semente - Contador), ValorMinimo, ValorMaximo)
 
Next
 
'EXIBINDO : NÚMERO ALEATÓRIO(1).
 
txtNumeroAleatorio1.Text = CType(Numero(0), String)
 
'EXIBINDO : NÚMERO ALEATÓRIO(2).
 
txtNumeroAleatorio2.Text = CType(Numero(1), String)
 
'EXIBINDO : NÚMERO ALEATÓRIO(3).
 
txtNumeroAleatorio3.Text = CType(Numero(2), String)
 
'EXIBINDO : NÚMERO ALEATÓRIO(4).
 
txtNumeroAleatorio4.Text = CType(Numero(3), String)
 
'EXIBINDO : NÚMERO ALEATÓRIO(5).
 
txtNumeroAleatorio5.Text = CType(Numero(4), String)
 
End Sub

9. Execute o programa e visualize o resultado.

clip_image002

Input Box de intervalo mínimo.

clip_image003

Input Box de intervalo máximo.

clip_image004

Resultado final com os números aleatórios.

Como pôde ser observado, o .NET Framework já provê uma classe exclusivamente para gerar números randômicos (aleatórios). Porém, fica a ressalva, o método demonstrado acima funciona muito bem para criar pequenos jogos e softwares não comerciais, mas em caso de projetos empresariais e/ou que exigem segurança aprimorada, não deve ser utilizado, afinal o resultado não é realmente “aleatório”, neste caso existem outros meios que possivelmente serão abordados mais à frente.

Qualquer dúvida, como sempre, pode ser inserida logo abaixo e assim que possível responderei com o maior prazer.

Pronto! Simples e prático.



Compartilhe:

Sobre: Lucio

Estudante e jovem desenvolvedor. Concluiu o ensino técnico de informática e o curso profissionalizante de montagem e manutenção. Gosta de aprender o porquê das coisas e não somente como utilizá-las, afinal instruções sem reflexão são para os computadores.

Comentários (1)

Fábio 29 de junho de 2011 às 1:22    

Lucio,

Parabéns pelo projeto, muito interessante!!!

Tem como criar alguma rotina para evitar que a sequencia de números se repetissem?

Vlw e mais uma vez parabéns!

Deixe um Comentário!

Nome: ( necessário )

E-Mail: ( necessário )

Website:

Comentário: