Jump to content

Tempo em milisegundos


afonso360

Recommended Posts

Em C ("suponho" que em C++ seja a mesma coisa) o srand() usa-se para seleccionar a sequencia de numeros pseudo-aleatorios devolvida por chamadas sucessivas a funcao rand().

Nao precisas, nem deves!, chamar a funcao srand() (mudar de sequencia de numeros psuedo-aleatorios) mais do que uma vez de cada vez que corres o teu programa.

De qualquer maneira, para obteres uma leitura de tempo com resolucao superior a 1 segundo, precisas de recorrer a funcionalidades especificas do teu Sistema Operativo.

Qual Sistema Operativo usas?

Qual compilador usas?

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Mete o tempo em segundos

srand(time(NULL));

e nunca mais chames a funcao srand() ... depois disto chama so a rand().

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Nao!

So repete se chamares srand() varias vezes no mesmo segundo.

Nao chames srand() mais do que uma vez por programa!

Chama rand() as vezes que precisares.

srand(time(NULL)); // escolhe a sequencia, por exemplo, #1362520507
// a sequencia 1362520507 tem milhoes de numeros pseudo-aleatorios
for (i = 0; i < 1000; i++) {
   printf("%d ", rand()); // imprime 1000 numeros pseudo-aleatorios
}
Edited by pmg
  • Vote 1

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

  • 2 weeks later...

Quando quero fazer coisas em que precise do tempo uso sempre clock() em ctime:

http://www.cplusplus.com/reference/ctime/clock/

Por exemplo, isto é como eu calculo o DeltaTime no meu engine:

void Core::mainLoop() {
   long LastTick = clock();
   float DeltaTime = 0;

   MSG Msg;
   while (true) {
       while (PeekMessage(&Msg, 0, 0, 0, PM_REMOVE)) {
           TranslateMessage(&Msg);
           DispatchMessage(&Msg);
       }
       if (Msg.message == WM_QUIT) {
           break;
       }
       if (GetKeyState(27) & 0x8000) {
           PostQuitMessage(0);
       }

       DeltaTime = (clock() - LastTick) * 0.001f;
       LastTick = clock();

       engine->Tick(DeltaTime);
       engine->Render(renderer);
   }
}
Edited by Baderous
geshi
Link to comment
Share on other sites

Quando quero fazer coisas em que precise do tempo uso sempre clock() em ctime:

http://www.cplusplus.com/reference/ctime/clock/

a fnução clock é usada para "calcular" o tempo de processador usado. a consequência directa disso é que basta ter outra aplicação a correr ao mesmo tempo para a tua aplicação não ter 100% do processados (isto para não falar do SO).

o que descrevi levaria imediatamente a que um resultado da chamada da função clock nunca equivale a 10 segundos, mas a um tempo real muito maior.

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Parece que o teu codigo com o clock e' para windows, seria melhor utilizar High Resolution

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.