Fórum Números Aleatórios sem repetição #288573
18/07/2005
0
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
Curtir tópico
+ 0Posts
19/07/2005
Paullsoftware
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
20/07/2005
Caezar
Vou tentar construir essa function.
Gostei + 0
20/07/2005
Henry.fartura
O help do delphi tem alguns exemplos, é só adapta-los.
[]´s
Fabio
Gostei + 0
20/07/2005
Macario
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
20/07/2005
Beppe
[/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
Clique aqui para fazer login e interagir na Comunidade :)