Números aleatórios e diferentes
:? Gostaria que o programa me retornasse 24 números aleatórios, só que sem repetir, de 1 até 24. Tentei o seguinte:
Alguem me ajuda?
sonec2004@itelefonica.com.br
[/code]
procedure TForm1.Button1Click(Sender: TObject); var Numero : array[1..24] of Integer; Igual : array[1..24] of boolean; Texto : array[0..24] of String; i, j : Integer; Begin for i:=1 to 24 do Igual[i]:=False; for i:=1 to 24 do begin Repeat j:=(Random(24)); Randomize; Until (Igual[j]=False); Igual[j]:=True; Numero[i]:=j; end; Texto[0]:=´Os valores são: ´; for i:=1 to 24 do Begin Texto[i]:=Texto[i-1]+IntToStr(Numero[i])+´ ´; end; Label1.Caption:=Texto[24]; end;
Alguem me ajuda?
sonec2004@itelefonica.com.br
[/code]
Sonec2004
Curtidas 0
Respostas
Beppe
21/07/2004
Random(24) retornaum número de 0 a 23. Some 1. Chame Randomize apenas uma vez.
PS: Relate o problema!!
PS: Relate o problema!!
GOSTEI 0
Sonec2004
21/07/2004
:D Beppe, Obrigado pelas dicas.
Mudei o código:
Os números ficam na lista2
Está rodando blz...
Mudei o código:
procedure AleatorioDifente; var Lista1 : Array[0..23] of Integer; Lista2 : Array[0..23] of Integer; n, i, j, A: Integer; begin n:=23; for i:=0 to n do Lista1[i]:=i; for i:=0 to n do Begin Randomize; A:=(Random(n+1)); Lista2[i]:=Lista1[A]; For j:=A to (n-1) do Lista1[j]:=Lista1[j+1]; n:=n-1; end; for i:=0 to 23 do end;
Os números ficam na lista2
Está rodando blz...
GOSTEI 0
Beppe
21/07/2004
De nada...naum parece muito ok pra mim, mas se vc gostou do resultado, blz... :wink:
GOSTEI 0