Array
(
)

Sorteio sem repetição

Sarnhold
   - 08 nov 2005

Preciso de uma ajuda urgente.

Faz uma semana que estou tentando e nada...

Como faço para não repetir um número num sorteio de números aleatórios?

O usuário informa quantos números quer que sejam sorteados através de um spinedit e o sorteio é feito entre os registros de uma tabela.

if qrSorteio.RecordCount > 0 then
begin
i:=qrSorteio.RecordCount;

Randomize;
for j := 1 to spcount.Value do
begin
numsorteado:=Random(i)+1;
ShowMessage(´Numero sorteado: ´ + IntToStr(numsorteado));
qrSorteio.First;
qrSorteio.MoveBy(numsorteado-2);
dm.tbSorteio.Append;

Está repetindo números já sorteados.

[]S


Citação:
Título editado por Massuda

Removido: ´Urgentíssimo!!! Help por favor!´
Por favor, evite esse tipo de título



Emerson
   - 08 nov 2005

crie um vetor onde vc guardará os números já sorteados.
tome esse código como exemplo e faça as devidas alterações/adaptações:

#Código

procedure TForm1.Button1Click(Sender: TObject);
var
numsorteado, i, j: integer;
Sorteado: array of integer;

function JaSorteado(numero: integer): Boolean;
var
i: Integer;
begin
Result := False;
for i := 0 to High(Sorteado) do
if Sorteado[i] = numero then
begin
Result := True;
Break;
end;
end;
begin
i := 200;
for j := 1 to spcount.Value do
begin
repeat
numsorteado := Random(i)+1;
until not JaSorteado(numsorteado);
ShowMessage(IntToStr(numsorteado));
SetLength(Sorteado,Length(Sorteado)+1);
Sorteado[High(Sorteado)] := numsorteado;

{ponha seu código aqui}
end;
end;



Gandalf.nho
   - 08 nov 2005

Bloqueado por Infração às Regras de Conduta :

Continue a discussão no seu tópico original
http://forum.clubedelphi.net/viewtopic.php?t=70259

Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].