Ir ao conteúdo
  • Cadastre-se

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


Daniel.Alexander

Posts recomendados

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...

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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:

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...