Gerador de número aleatórios
Bom dia a todos
Preciso criar um gerador de número aleatorios.
Esse gerador deve gerar 15 números aleatórios e distintos entre 1 e 90.
Eu criei uma rotina,só que quando executada várias vezes ocorre um travamento estranho. O código que criei se encontra abaixo...
Por favor, me ajudem, pois preciso disso para o meu projeto final da faculdade...
Quem puder verificar onde está o erro ou indicar um procedimento novo, eu agradeceria muito!
Desde já agradeço!
Código feito por mim e que trava inesperadamente:
procedure TForm1.Button1Click(Sender: TObject);
var
I,K,j,y:integer;
begin
for y:=1 to 15 do
begin
cart1[y]:=0;
end;
cont:=cont+1;
label2.caption:=Inttostr(cont);
Randomize;
igual1:=0;
for I := 1 to 15 do
begin
repeat
J:=I-1;
cart1[I]:=randomrange(0,90);
if(cart1[I]=0)then
begin
igual1:=1;
end
else
begin
if (I > 1)then
begin
for K:=j downto 1 do
begin
if(cart1[I]=cart1[K]) then
begin
igual1:=1;
break;
end
else
begin
igual1:=0;
end;
end;
end;
end;
until(igual1=0);
end;
Preciso criar um gerador de número aleatorios.
Esse gerador deve gerar 15 números aleatórios e distintos entre 1 e 90.
Eu criei uma rotina,só que quando executada várias vezes ocorre um travamento estranho. O código que criei se encontra abaixo...
Por favor, me ajudem, pois preciso disso para o meu projeto final da faculdade...
Quem puder verificar onde está o erro ou indicar um procedimento novo, eu agradeceria muito!
Desde já agradeço!
Código feito por mim e que trava inesperadamente:
procedure TForm1.Button1Click(Sender: TObject);
var
I,K,j,y:integer;
begin
for y:=1 to 15 do
begin
cart1[y]:=0;
end;
cont:=cont+1;
label2.caption:=Inttostr(cont);
Randomize;
igual1:=0;
for I := 1 to 15 do
begin
repeat
J:=I-1;
cart1[I]:=randomrange(0,90);
if(cart1[I]=0)then
begin
igual1:=1;
end
else
begin
if (I > 1)then
begin
for K:=j downto 1 do
begin
if(cart1[I]=cart1[K]) then
begin
igual1:=1;
break;
end
else
begin
igual1:=0;
end;
end;
end;
end;
until(igual1=0);
end;
Reginaldof
Curtidas 0
Respostas
Lourival.reis
27/10/2003
use a função Random, utilize o help, tem até exemplos no help, nao precisa disso tudo que vc fez e colocar a faixa e apenas testar no array ou banco que vc guarda os numeros se por um acaso ela já nao existe...espero que tenha ajudao...
GOSTEI 0
Beppe
27/10/2003
Código feito por mim e que trava inesperadamente:
Inesperadamente só pra ti. Sobre o erro eu não sei, mas o[b:486610341d]s[/b:486610341d] erro[b:486610341d]s[/b:486610341d] são incontáveis para citar.
Tu poderia ter pensado em algo como:
procedure TForm1.Button1Click(Sender: TObject); const TotalNumeros = 15; Dominio = 90; var Numeros: array[1..TotalNumeros] of Integer; Sorteados: set of 1..Dominio; I, J: Integer; begin Sorteados := []; for I := Low(Numeros) to High(Numeros) do begin repeat Numeros[I] := Random(Dominio) + 1; until not (Numeros[I] in Sorteados); Include(Sorteados, Numeros[I]); end; end;
Ataliba
GOSTEI 0