Sorteio sem repetição

08/11/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

[color=red:4d9e31d6ed]Título editado por Massuda [b:4d9e31d6ed]Removido: ´Urgentíssimo!!! Help por favor!´[/b:4d9e31d6ed] Por favor, evite esse tipo de título[/color:4d9e31d6ed]



Sarnhold

Respostas

08/11/2005

Emerson

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:

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&93; = 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&91;High(Sorteado)&93; := numsorteado;

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



Responder Citar

08/11/2005

Gandalf.nho

[b:3b499d20bf][color=red:3b499d20bf]Bloqueado por Infração às Regras de Conduta :[/color:3b499d20bf][/b:3b499d20bf]

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

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


Responder Citar