Jump to content
Fórum Script Brasil
  • 0

Numeros Randomicos


Guest Program-amador

Question

Guest Program-amador

tem como evitar que a sequência gerada de Nº randomicos comece com 0(Zero).

estou usando a seginte procedure:

procedure TForm1.Button1Click(Sender: TObject);

var temp:string;

cont:integer;

begin

for cont:=1 to 8 do begin

temp:=temp+IntToStr(Random(9));

end;

Edit1.Text:=temp;

end;

Obrigado!

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

é só você jogar em um laço de repeticao ate q o numero seja diferente de zero.

usa o repeat ... until ( <condicao> ), e só concatena, ou soma os valores quando sair desse laço porque assim você garante q não comeca com zero..

e +uma coisa , inicializa essa tua variavel temp, porque você tah trabalhando com ela sem tah inicializada e isso pode te atrapalhar no futuro..

vlw.

Link to comment
Share on other sites

  • 0

Mesmo esquema da resposta anterior, mas agora não deixando que o primeiro número seja igual a 0

procedure TForm1.Button1Click(Sender: TObject);
var temp:string;
    cont:integer;
begin
  temp:='';
  for cont:=1 to 8 do begin
    temp:=temp+IntToStr(random(9));
    while temp[1]='0' do temp:=IntToStr(random(9));
  end;
  Edit1.Text:=temp;
end;

Link to comment
Share on other sites

  • 0
Guest - Maurício -

Cara, qualquer algoritmo de geração de números aleatórios não é tão aleatório assim, e isso vale para qualquer lintuagem. O que acontece é que o computador consegue gerar números aleatórios, mas nós sabemos como programas funcionam, eles são algo estático, portanto os números gerados sempre terão a mesma sequencia, e não tem muito como fugir disso.

Desta forma, para que um algoritmo consiga gerar números aleatórios de verdade é necessário dar ao algoritmo uma semente, que seja um número aleatório para ele tomar por base para a geração dos próximos números. A coisa complica se você for pensar em um algoritmo para gerar um número aleatório para o gerador de números aleatórios, mas é mais ou menos isso mesmo!

Por isso, as outras soluções postadas aqui não resolveriam muito o seu problema, pois a sequencia de números continuaria sendo sempre a mesma!

Para resolver o problema, cada linguagem faz de um jeito, mas normalmente a solução é pegar informações da CPU, como por exemplo o tempo em milisegundos ou algo semelhante, o que é uma boa semente, mas não deve ser usada para gerar números aleatórios, pois em um laço, os milisegundos seriam um número mais ou menos sequencial e crescente.

Sendo assim, em Delphi basta você chamar a rotina Randomize, em algum ponto do seu aplicativo para que uma semente aleatória seja pega da CPU, a partir daí pode chamar a rotina Random que os números realmente vão ser aleatórios a cada execução do programa!

Link to comment
Share on other sites

  • 0

Boas Pessoal...

Pegando neste tópico...

Estou a fazer um pequeno programa para gerar numeros aleatorios de 1 a 50.

Utilizando essa rotina já consegui colocar no edit1 um numero aleatorio de 1 a 50, o que gostava de saber é como e que faço para colocar na edit2,edit3,edit4,edit5, numeros aleatorios sem repetir por exemplo o numero da edit1 com o numero da edit2???

alguém pode dar uma ajuda???

Cumps

Monky

Edited by Monky
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      651.8k
×
×
  • Create New...