função randomize

Delphi

16/02/2005

Ola galera estou desenvolvendo um proj e estou usando a função randomize (gerar numeros aleatórios). Tem como fazer com que os numeros gerados não se repitam?


Urbano

Urbano

Curtidas 1

Respostas

Marcelo Saviski

Marcelo Saviski

16/02/2005

use o Randomize só uma vez, no inicio do bloco ou loop que gera ós nº aleatórios


GOSTEI 0
Motta

Motta

16/02/2005

Se eles são aleatórios não devem seguir lógica nenhuma.

Assim o uso de uma função deste tipo tem a chance estatística dele se repetir.

Vc pode guardar os valores gerados num array e verificar se já foram ´sorteados´

Outra solução é gerar os valores possiveis, carrega-los num array (TStringList serve) sortea-los pelo array e remover os valores do array.


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

16/02/2005

ops, acho que não tinha prestado bem atenção na dúvida...

um exemplo:


var
  FormX: TFormX;
  ...
  Nums: string;


function Sorteia(Max: Integer): Integer
begin
  repeat
    Result := Random(Max);
  until
    Pos(IntToStr(Result), nums) = -1;
  Nums := Nums + IntToStr(Result) + ´,´;
end;


Mas tem que cuidar para não chamar a função mais vezes do que o parametro passado Max, senão ela entra em loop infinito


GOSTEI 0
Urbano

Urbano

16/02/2005

Valeu funcionou!!!!!!!!!!!!!
É ISSO MESMO QUE EU ESTAVA PRECISANDO


GOSTEI 0
POSTAR