Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Daniel.Alexander

Gerar sequência aleatória (randon) no Vb6

Recommended Posts

aí galera, to precisando da ajuda de vocês novamente, eu tenho que gerar um uma sequencia de 15 numeros com valores que podem variar de 1 a 25 com as condições: os números não podem ser repetidos numa mesma sequencia e uma sequencia não pode ser igual a outra. Qualquer ajuda é bem vinda pessoal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse algoritmo não é impossivel, mas é bem complicado..

e se uma sequencia cair, tipo de 1 a 9?

você vai ter que armazenar de alguma forma eles, até que o 10º seja diferente de 10.. daí continuar a comparar com os proximos a serem gerados..

Mas pra qual finalidade é isso? Eu não vi nenhuma aplicavel.. ao menos não comercialmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá:

- uma sequencia de 15 numeros

- valores que podem variar de 1 a 25

- números não podem ser repetidos numa mesma sequencia

- uma sequencia não pode ser igual a outra

Solução:

Private Sub GerarNumeros()

    Dim MenorValor As Long, MaiorValor As Long
    Dim Contador As Long, Calculado As Long
    Dim Repetido As Boolean, Resultado() As Long, Mensagem As String
    
    MenorValor = 1
    MaiorValor = 25
    
    For Contador = 1 To 15
        DoEvents
        'Redimensionando array
        ReDim Preserve Resultado(Contador)
        'Se for o primeiro numero a gerar,
        'não precisa verificar duplicidade
        If Not (Contador = 1) Then
            Do
                'Inicializando geração de
                'números aleatórios
                Randomize Timer
                'Calculando próximo numero
                Resultado(Contador) = Int((MenorValor - MaiorValor + 1) _
                                      * Rnd + MaiorValor) & " "
                'Verificando se o número já existe
                For Calculado = 1 To (Contador - 1)
                    Repetido = (Resultado(Contador) = Resultado(Calculado))
                    If Repetido Then Exit For
                Next
            Loop While Repetido
        Else
            'Gerando o primeiro número
            Resultado(Contador) = Int((MenorValor - MaiorValor + 1) _
                                  * Rnd + MaiorValor) & " "
        End If
        
        'String com os números gerados
        Mensagem = Mensagem & Resultado(Contador) & _
              IIf((Contador = 15), "", "-")
        
    Next
    
    'Esvaziando array
    Erase Resultado
    
    MsgBox Mensagem, vbInformation, "Numeros"
    
End Sub

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×