Galera to fazendo um trabalho aqui sobre ant colony e to precisando de uma função (em linux) que retorne o tempo (pode ser minutos e segundos, mas se for só segundos já me salva a pele)......
será que alguem ai pode me ajudar :wink:
[]'s
- Home
- >
- Fórum
- >
- Profissional
- >
- Programação, Sc...
- >
- Função que pega o tempo e...
vc quer um intervalo de tempo, ou quer saber a (data e) hora em que alguma coisa aconteceu?
seria uma função que retornasse a hora, mas nesse caso eu preciso dos segundos pra poder usá-los em uma outra função de randomização da escolha dos caminhos das formigas :roll:
eu tinha feito uma função pra fazer isso mais ai eu tve q colocar umas threads no meio e ai ficou meio confuso... sem contar q foi uma "gambiarra", por isso eu preferiria uma função do C msm......
jqueiroz se vc souber alguma função ai pra poder fazer essas duas coisas pode dizer tb, vai q um dia eu precise dela :wink:
[]'s
Vc precisa da hora ou de uma boa semente pra randomizar o gerador de números aleatórios???
eu preciso da hora....
caso vc tenha uma boa semente pra gerar os numeros vc pode me mandar?? é q ai vou experimentar ela tb pra fazer alguns testes :wink:
a hora vc pega com localtime().
a semente, vc pode ler do dispositivo /dev/random
valeu jqueiroz
qualquer outra duvida eu volto a postar... e se depois q eu acabar eu ver q ficou fera o programa eu coloco ele pra vcs verem
:mrgreen:
ae jqueiroz como faço pra ler essa semente do /dev/random?
e eu to tendo um probleminha do com o localtime...... ele tá dentro de um while pra cada interação ele pegar o tempo, mas ele pegou a primeira vez e depois mantem o msm :roll:
num sei o q tah acontecendo aqui..... alguem dá um help
up....
ae jqueiroz como faço pra ler essa semente do /dev/random?
Leia como se fosse um arquivo onde estivesse gravado um número inteiro:
...
volatile int seed;
FILE *random = fopen("/dev/random","r"
if( fread( random, &seed, sizeof(seed) ) != sizeof(seed) ) {
printf( "Erro ao ler semente randômica\n"
exit(-1);
}
...
e eu to tendo um probleminha do com o localtime......
ele tá dentro de um while pra cada interação ele pegar o tempo, mas ele pegou a primeira vez e depois mantem o msm
num sei o q tah acontecendo aqui..... alguem dá um help
Hum, fui rever as funções agora.
localtime() na verdade não informa a hora, mas sim converte um valor de hora que vc pega com a syscall time().
#include <time.h>
time_t time(time_t *t);
Vc pode usar o parâmetro de time() como NULL: "hora_inicio = time(NULL);".
O problema que pode estar havendo aí é dessas iterações levarem menos de um segundo, ou se vc quiser precisão de menos de um segundo na sua medição, já que time() te retorna o tempo em segundos.
Nesse caso, vc precisa usar outra função, e essa vai mudar de sistema para sistema. Sendo Linux, acredito que vc possa usar "getitimer()", mas essa função é bem complicada, e eu nunca cheguei a usar.
não acredito que as interações estejam ocorrendo a menos de segundos... jah que pra mim poder visualizar na tela as "formiguinhas" andando eu coloquei um sleep de 2 segundos.... e muitas vezes tb, ocorrem muitas interações devido ao tamoanho do caminho a ser percorrido....
quanto ao /dev/random eu vo testar e depois posto as respostas
e tb vo tentar usar o getitimer().....
Valeu pela ajuda dinovo jqueiroz