sis.relogio() não funciona no CentOS

Iniciado por rafael, Fevereiro 07, 2018, 12:55:03 PM

tópico anterior - próximo tópico

rafael

Essa função é fundamental pra gerar números aleatórios porque ela pega o tempo em milissegundos.

quando eu uso no ubuntu ela retorna o tempo em milissegundos, mas no CentOS retorna sempre 0

http://ap.imagensbrasil.org/image/d93qUP

adalberto

#1
Vou ter que instalar o CentOS em uma máquina virtual para testar. Qual é a versão que vc usa? 32 ou 64?

Pelo que andei vendo esta função vem do C clock() e seu resultado e significado é dependente de plataforma.

No momento sugiro a você usar a função sis.tempo(), ela retorna em segundos o tempo atual.

Ex.:

mat.xrandonico( sis.tempo() );
  local a1 = mat.randonico();
  local a2 = mat.randonico(); 
  imprima(a1,a2);



adalberto

#2
Criei uma função aleatorio(), ela é bem simples mas garante que não haja repetições em ocorrências em menos de um segundo, veja:



local mat = mat;
local x = 0;
local funcao aleatorio()     
  x = x + 1;
  local z = sis.tempo()+x;
  mat.xrandonico(z);
fim


//teste:
para i = 1, 10 inicio
  aleatorio(); //cria uma chave randômica.
  imprima(mat.randonico()); //retorna o número aleatório baseado na chave randômica.
fim
 


Obs.: só agora vi que cometi um erro ortográfico, o certo é randômico e não randônico, vou modificar esta função na próxima versão, possivelmente vou mudar de mat.randonico e mat.xrandonico para mat.aleatorio e mat.xaleatorio;

Vou manter a nomenclatura errada para garantir compatibilidade com quem já usou estas funções.