Números Aleatórios sem repetição
Olá Amigos sou no aqui no fórum e gostria de fazer uma pergunta:
Eu tenho um Array [1..9] chamado aMat do tipo Byte.
Nele eu sortei numeros de 0 à 100 com a está função:
for i:=1 to 9 do
aMat[i]:=Randon(101)
Eu gostaria que os números não se repitam no Array.
Como eu faria isso?
Eu tenho um Array [1..9] chamado aMat do tipo Byte.
Nele eu sortei numeros de 0 à 100 com a está função:
for i:=1 to 9 do
aMat[i]:=Randon(101)
Eu gostaria que os números não se repitam no Array.
Como eu faria isso?
Caezar
Curtidas 0
Respostas
Paullsoftware
18/07/2005
A função Random(x) retorna um número aleatório entre 0 e x - 1.
Mas não há como evitar repetições. Para isso, você deve armazenar os números gerados numa tabela. Ao chamar a função, se o número retornado já existe na tabela, gera mais um número, senão, adiciona-o à tabela. espero ter ajudado :wink:
Mas não há como evitar repetições. Para isso, você deve armazenar os números gerados numa tabela. Ao chamar a função, se o número retornado já existe na tabela, gera mais um número, senão, adiciona-o à tabela. espero ter ajudado :wink:
GOSTEI 0
Caezar
18/07/2005
Obrigado,
Vou tentar construir essa function.
Vou tentar construir essa function.
GOSTEI 0
Henry.fartura
18/07/2005
vc pode também ao invés de utilizar um array utilizar um [b:f367b9dd9b]Set[/b:f367b9dd9b], ja que ao contrario do array o [b:f367b9dd9b]Set [/b:f367b9dd9b]não permite dados duplicados.
O help do delphi tem alguns exemplos, é só adapta-los.
[]´s
Fabio
O help do delphi tem alguns exemplos, é só adapta-los.
[]´s
Fabio
GOSTEI 0
Macario
18/07/2005
A função Random(x) retorna um número aleatório entre 0 e x - 1.
Mas não há como evitar repetições. Para isso, você deve armazenar os números gerados numa tabela. Ao chamar a função, se o número retornado já existe na tabela, gera mais um número, senão, adiciona-o à tabela. espero ter ajudado :wink:
Ola inclua a chamada [b:60b93662cd]Randomize[/b:60b93662cd], ao entrar no form, e os numeros nao se repetiram no array.
espero que ajude.
GOSTEI 0
Beppe
18/07/2005
[quote:91e4c79575=´Macario o Aspone´]Ola inclua a chamada [b:91e4c79575]Randomize[/b:91e4c79575], ao entrar no form, e os numeros nao se repetiram no array.
[/quote:91e4c79575]
Claro que se repetirão, mais cedo ou mais tarde, isto pq Randomize apenas inicializa uma variável apenas. Se por acaso ela iniciar com 0, é como se nenhuma chamada a ela tivesse sido feita.
Pode fazer algo assim:
[/quote:91e4c79575]
Claro que se repetirão, mais cedo ou mais tarde, isto pq Randomize apenas inicializa uma variável apenas. Se por acaso ela iniciar com 0, é como se nenhuma chamada a ela tivesse sido feita.
Pode fazer algo assim:
const N = 10; var I, T, P: Integer; Num: array[0..N - 1] of Integer; begin ListView1.Clear; for I := 0 to N - 1 do Num[I] := I; for I := N - 1 downto 0 do begin P := Random(I + 1); T := Num[I]; Num[I] := Num[P]; Num[P] := T; end; ... end;
GOSTEI 0