Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Gerar numeros aleatórios sem repetir


robinhocne

Pergunta

Fiz esse código abaixo para gerar numeros aleatórios de 1 á 10:

procedure TForm1.Button2Click(Sender: TObject);
var
   Num: Byte;
   a : integer;
begin
    Randomize;
    for a := 1 to 10 do
      begin
        Num := Random(10);
        Memo1.Lines.Add(IntToStr(Num));
      end;
end;

porém tenho 2 problemas ai;

1 > Queria gerar um numero aleatório de 1 á 10 e não de 0 á 10, nesse caso está gerando numero 0.

2 > Está repetindo os numeros e não poderia repetir.

Tipo queria que gerasse os numeros e bagunçasse com ele, algém poderia me ajudar com esses 2 probleminhas, pois já pesquisei sobre o Random e não consegui resolver.

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

amigo, a lógica é a seguinte:

1 - definir um array

2 - gerar os numeros aleatorios

3 - se o numero gerado for 0 gerar outro

4 - guardar os numeros no array

5 - comparar os numeros desse array

6 - se diferente dos outros guardar

7 - se igual, gerar outro

8 - no final mostrar num memo a sequencia gerada

OBS: tente fazer, para treinar o raciocinio lógico ... se não conseguir eu posto para voce

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
amigo, a lógica é a seguinte:

1 - definir um array

2 - gerar os numeros aleatorios

3 - se o numero gerado for 0 gerar outro

4 - guardar os numeros no array

5 - comparar os numeros desse array

6 - se diferente dos outros guardar

7 - se igual, gerar outro

8 - no final mostrar num memo a sequencia gerada

OBS: tente fazer, para treinar o raciocinio lógico ... se não conseguir eu posto para voce

abraço

fiz assim e ficou show de bola, valeu Jhonas.....

var
  I, A, P : Integer;
  Num: array of Integer;
begin

  SetLength(Num,Qtd);// Recebe a quantidade de suportes

  randomize;
  TblInt.First;

  for I := 0 to Qtd - 1 do
    Num[I] := I+1;
  for I := Qtd - 1 downto 0 do
  begin
    P := Random(I+1);
    A := Num[I];
    Num[I] := Num[P];
    Num[P] := A;
  end;

  for I := Low(Num) to High(Num) do
    begin

      TblInt.Edit;
      TblIntSupMsn.AsInteger := Num[I];
      TblInt.Next;

    end;

Link para o comentário
Compartilhar em outros sites

  • 0

legal ... veja outra maneira

procedure TForm1.Button1Click(Sender: TObject);
const
  N = 10;
var
  I, L, M: Integer;
  Num: array[0..N - 1] of Integer;
begin
  // GERAR NUMEROS ALEATORIOS SEM REPETIÇÃO
  Memo1.Clear;
  for I := 0 to N - 1 do
    Num[I] := I;
  for I := N - 1 downto 1 do
  begin
    M := Random(I + 1);

    while M = 0 do  // EXCLUIR O ZERO
      M := Random(I + 1);

    L := Num[I];
    Num[I] := Num[M];
    Num[M] := L;

    memo1.Lines.Append( inttostr(Num[i]));
  end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
var
  Form1: TForm1;
  a: array [1..10] of TEdit;
  vetor1: array [1..10] of integer;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  y, i, Rand: integer;
begin
    Randomize;
      for I := 1 to 10 do
      begin
      Rand:=Random(100);       //será sorteado os números de 0 a 9
      if i>1 then
        begin
        y:=1;
          repeat
            if Rand = Vetor1[y] then
              rand:= Random(100)+1;
          y:= y+1;
          until (y = I );
        end;
      vetor1[I]:= Rand;
      A[i].Text:= IntToStr(vetor1[i])
      end;
end;

Usei esse aqui para resolver meu problema :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...