RANDOM SEM REPETIR

ICEMAN 28/05/2007 18:37:08
#218571
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

VBAPRENDE 28/05/2007 18:41:08
#218573
Resposta escolhida
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 !!!
USUARIO.EXCLUIDOS 28/05/2007 18:41:40
#218574
utilize o randomize antes do RND

randomize
x=int(rnd *200)+1

USUARIO.EXCLUIDOS 28/05/2007 18:44:11
#218575
Ver se isso ajuda, já teve outro colega com esse problema.

Números RandÃÂ'micos sem repetição
USUARIO.EXCLUIDOS 28/05/2007 18:45:20
#218577
Ah, esqueci, está em vb.net, mas você pode utilizar a mesma lógica pava o VB6.
ICEMAN 28/05/2007 18:53:43
#218579
eu sei randomizar mais sem repetir nao

como coloco nessa array e como eu checo

tenhu pouco conhecimento em vb


USUARIO.EXCLUIDOS 28/05/2007 19:07:20
#218583
Pega aquele exemplo que postei anteriormente, lá tem como você pode fazer.
ICEMAN 28/05/2007 19:09:40
#218584
num saquei nada daquele codigo la
PROGRAMADORVB6 29/05/2007 09:10:12
#218636
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
PROGRAMADORVB6 29/05/2007 09:12:49
#218638
(-1 é claro tem a ver com o nº de voltas do ciclo.
USUARIO.EXCLUIDOS 29/05/2007 11:21:28
#218660
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

Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas