Sorteio sem repetição
08/11/2005
0
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
[quote:4d9e31d6ed=´Moderação´][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][/quote:4d9e31d6ed]
Sarnhold
Posts
08/11/2005
Emerson Nascimento
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] = 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;
08/11/2005
Gandalf.nho
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].
Clique aqui para fazer login e interagir na Comunidade :)