Usuário com melhor resposta
Gerar sequência de números aleatórios sem repetições

Pergunta
-
Boa noite pessoal!
Estou tentando criar um sistema que gerar uma sequencia de números sem repetições na sequência. Exemplo: 01 05 06 05 10. Nesse caso o numero 05 repetiu duas vezes e é isso que estou tentando impedir, gostaria que não repetisse nenhum numero. Segue meu módulo do Microsoft Access. Help!!!!!
Option Compare Database
Function GerarSenha()
On Error GoTo TratarErro
Dim TamanhoSenha As Integer, Codigo As String, Novo As String
'--------------------------------------
'CRIA SENHA ALEATÓRIA
'--------------------------------------
Codigo = ""
TamanhoSenha = Nz(Form_SenhaAleatoria.TamanhoSenha, 8)
Dim Letra(26)
Letra(0) = "01 "
Letra(1) = "02 "
Letra(2) = "03 "
Letra(3) = "04 "
Letra(4) = "05 "
Letra(5) = "06 "
Letra(6) = "07 "
Letra(7) = "08 "
Letra(8) = "09 "
Letra(9) = "10 "
Letra(10) = "11 "
Letra(11) = "12 "
Letra(12) = "13 "
Letra(13) = "14 "
Letra(14) = "15 "
Letra(15) = "16 "
Letra(16) = "17 "
Letra(17) = "18 "
Letra(18) = "19 "
Letra(19) = "20 "
Letra(20) = "21 "
Letra(21) = "22 "
Letra(22) = "23 "
Letra(23) = "25 "
Letra(24) = "26"
Letra(25) = "27"
Randomize
Do While Len(Codigo) < TamanhoSenha
Novo = Letra(Int(26 * Rnd))
Codigo = Codigo & Novo
Loop
GerarSenha = Codigo
SairFunction:
Exit Function
TratarErro:
MsgBox "Ocorreu um erro ao processar o comando:" & Chr(13) & Err.Description, vbCritical, " Erro " & Err.Number
Resume SairFunction
End Function
Desde já agradeço a ajuda!
terça-feira, 23 de janeiro de 2018 02:55
Respostas
-
Para VB.Net creio estar respondido.
Se foi útil, por gentileza, marque como útil/resposta.
Para VBA, acredito ser melhor fazer a pergunta no tópico correto.
MARIANO1776
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 24 de janeiro de 2018 12:54
terça-feira, 23 de janeiro de 2018 20:27 -
Bom dia.
Neste formulário, você escolhe o número mínimo o máximo e quantos deles você quer na se sequencia.
Private Sub Bu_Gerar_Sequencia_Aleatoria_Click(sender As Object, e As System.EventArgs) Handles Bu_Gerar_Sequencia_Aleatoria.Click Números_Aleatórios() End Sub Private Sub Números_Aleatórios() ListBox_Resultado.Items.Clear() txt_limite_inferior.Text = "1" txt_limite_superior.Text = "50" txt_Qtd_Num_Sequencia.Text = "20" If txt_limite_inferior.Text.Trim = "" Then txt_limite_inferior.Text = "0" If txt_limite_superior.Text.Trim = "" Then txt_limite_superior.Text = "0" If txt_Qtd_Num_Sequencia.Text.Trim = "" Or txt_Qtd_Num_Sequencia.Text.Trim = "0" Then txt_Qtd_Num_Sequencia.Text = "1" Dim I, J, numero As Integer Dim limite_inferior As Integer = CInt(txt_limite_inferior.Text) Dim limite_superior As Integer = CInt(txt_limite_superior.Text) Dim qtd_sequencia As Integer = CInt(txt_Qtd_Num_Sequencia.Text) Dim matriz(CInt(txt_Qtd_Num_Sequencia.Text) - 1) As Int32 Dim GeradorDeNumerosAleatorios As Random = New Random() For I = 0 To qtd_sequencia - 1 'preenche a sequencia aleatoriamente Do numero = GeradorDeNumerosAleatorios.Next(limite_inferior, limite_superior + 1) 'seleciona um número obrigatório Loop While matriz.Contains(numero) 'verifica se o número não está na matriz para não haver duplicidade na escolha matriz(I) = numero ListBox_Resultado.Items.Add(matriz(I)) 'exibimos no listbox Next End Sub
Se atendeu, por gentileza, marque como resposta/útli.
MARIANO1776
- Sugerido como Resposta Mariano1776Banned terça-feira, 23 de janeiro de 2018 20:27
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 24 de janeiro de 2018 12:54
terça-feira, 23 de janeiro de 2018 09:13
Todas as Respostas
-
Se possível tem como implementar no código vba que coloquei abaixo? Estou utilizando o microsoft access.
Option Compare Database
Function GerarSenha()
On Error GoTo TratarErro
Dim TamanhoSenha As Integer, Codigo As String, Novo As String
'--------------------------------------
'CRIA SENHA ALEATÓRIA
'--------------------------------------
Codigo = ""
TamanhoSenha = Nz(Form_SenhaAleatoria.TamanhoSenha, 8)
Dim Letra(26)
Letra(0) = "01 "
Letra(1) = "02 "
Letra(2) = "03 "
Letra(3) = "04 "
Letra(4) = "05 "
Letra(5) = "06 "
Letra(6) = "07 "
Letra(7) = "08 "
Letra(8) = "09 "
Letra(9) = "10 "
Letra(10) = "11 "
Letra(11) = "12 "
Letra(12) = "13 "
Letra(13) = "14 "
Letra(14) = "15 "
Letra(15) = "16 "
Letra(16) = "17 "
Letra(17) = "18 "
Letra(18) = "19 "
Letra(19) = "20 "
Letra(20) = "21 "
Letra(21) = "22 "
Letra(22) = "23 "
Letra(23) = "25 "
Letra(24) = "26 "
Letra(25) = "27 "
Randomize
Do While Len(Codigo) < TamanhoSenha
Novo = Letra(Int(26 * Rnd))
Codigo = Codigo & Novo
Loop
GerarSenha = Codigo
SairFunction:
Exit Function
TratarErro:
MsgBox "Ocorreu um erro ao processar o comando:" & Chr(13) & Err.Description, vbCritical, " Erro " & Err.Number
Resume SairFunction
End Function- Editado DiogenesSousa terça-feira, 23 de janeiro de 2018 16:26
terça-feira, 23 de janeiro de 2018 16:24