RANDOM SEM REPETIR
Existe alguma foram de eu gerar um numero randomico sem repeti-lo mais na frente pois tenhu que gerar um numero aleatorio entre 1 e 200
ai nao pode repetir se nao repete o valor
muito obrigado desde ja
ai nao pode repetir se nao repete o valor
muito obrigado desde ja
quando eu quero fazer isso eu gravo em uma array os numeros que ja sairam toda vez que ele gera um numero eu checo na array, se ja tiver eu rondomizo novamente até sair um que não tem na array.
Espero ter ajudado !!!
Espero ter ajudado !!!
utilize o randomize antes do RND
randomize
x=int(rnd *200)+1
randomize
x=int(rnd *200)+1
Ver se isso ajuda, já teve outro colega com esse problema.
Números RandÃÂ'micos sem repetição
Números RandÃÂ'micos sem repetição
Ah, esqueci, está em vb.net, mas você pode utilizar a mesma lógica pava o VB6.
eu sei randomizar mais sem repetir nao
como coloco nessa array e como eu checo
tenhu pouco conhecimento em vb
como coloco nessa array e como eu checo
tenhu pouco conhecimento em vb
Pega aquele exemplo que postei anteriormente, lá tem como você pode fazer.
num saquei nada daquele codigo la
Então é assim
controis uma matriz que te vai absorver até 200 numeros
depois fazes 1 rotina para gerar 1 nº com a seguinte condição :
1º procurar na matiz se hexiste o nºgerado pelo Randomize
2º caso verdadeiro então gera outravez , caso negativo adiciona á matriz .
- uma dica para que não adormeças sentado emquanto escolhe de 1 - 200:
-Quando ele adicionar o nº escolhido á matriz ,não te esqueça de pÃÂ'r (-1) valor senão tá sempre a escolher 1 nº ente 1 e 200 e fica-te + lento o processo.
cump.
programadovb6
controis uma matriz que te vai absorver até 200 numeros
depois fazes 1 rotina para gerar 1 nº com a seguinte condição :
1º procurar na matiz se hexiste o nºgerado pelo Randomize
2º caso verdadeiro então gera outravez , caso negativo adiciona á matriz .
- uma dica para que não adormeças sentado emquanto escolhe de 1 - 200:
-Quando ele adicionar o nº escolhido á matriz ,não te esqueça de pÃÂ'r (-1) valor senão tá sempre a escolher 1 nº ente 1 e 200 e fica-te + lento o processo.
cump.
programadovb6
(-1 é claro tem a ver com o nº de voltas do ciclo.
Ver se isso ajuda um pouco, basta você tentar adaptar a seu problema.
Public Sub GerarNumeros()
Dim Numero As Integer
Dim i As Integer
Dim Existe As Boolean
Dim Numeros(200) As Integer
Dim Indice As Integer
Dim LimiteInferior As Integer
Dim LimiteSuperior As Integer
If Me.txtLimiteInferior.Text = Empty Then
LimiteInferior = 1
End If
If Me.txtLimiteSuperior.Text = Empty Then
LimiteSuperior = 200
End If
Randomize
Indice = 0
While Indice < 200
Numero = Int(Rnd(LimiteInferior) * LimiteSuperior)
If Indice = 0 Then
Indice = Indice + 1
Numeros(Indice) = Numero
Else
Existe = False
For i = 1 To Indice
If Numeros(i) = Numero Then
Existe = True
End If
Next
If Not Existe Then
Numeros(Indice) = Numero
Indice = Indice + 1
End If
End If
Wend
For i = 0 To Indice - 1
Me.lstNumerosGerados.AddItem Numeros(i)
Next
End Sub
Public Sub GerarNumeros()
Dim Numero As Integer
Dim i As Integer
Dim Existe As Boolean
Dim Numeros(200) As Integer
Dim Indice As Integer
Dim LimiteInferior As Integer
Dim LimiteSuperior As Integer
If Me.txtLimiteInferior.Text = Empty Then
LimiteInferior = 1
End If
If Me.txtLimiteSuperior.Text = Empty Then
LimiteSuperior = 200
End If
Randomize
Indice = 0
While Indice < 200
Numero = Int(Rnd(LimiteInferior) * LimiteSuperior)
If Indice = 0 Then
Indice = Indice + 1
Numeros(Indice) = Numero
Else
Existe = False
For i = 1 To Indice
If Numeros(i) = Numero Then
Existe = True
End If
Next
If Not Existe Then
Numeros(Indice) = Numero
Indice = Indice + 1
End If
End If
Wend
For i = 0 To Indice - 1
Me.lstNumerosGerados.AddItem Numeros(i)
Next
End Sub
Tópico encerrado , respostas não são mais permitidas