Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

353
Views
¿Es posible aumentar la velocidad de actualización de srand(time(NULL)) en C?

Estoy preguntando si hay una forma de aumentar la velocidad srand(time(NULL)); función "actualiza"? Entiendo que srand() produce una nueva semilla según el tiempo (una vez por segundo), pero estoy buscando una alternativa a srand() que pueda actualizarse con más frecuencia que intervalos de 1 segundo.

Cuando ejecuto mi programa, produce el resultado que se supone, pero la semilla permanece igual durante esencialmente un segundo, por lo que si el programa se ejecuta varias veces por segundo, el resultado permanece igual.

Perdón por una pregunta tan simple, pero no pude encontrar una respuesta específica para C en ninguna parte en línea.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede intentar obtener un valor inicial de alguna otra fuente. En un sistema Unix, por ejemplo, podría obtener un valor aleatorio de cuatro bytes de /dev/random:

 void randomize() { uint32_t seed=0; FILE *devrnd = fopen("/dev/random","r"); fread(&seed, 4, 1, devrnd); fclose(devrnd); srand(seed); }
over 4 years ago · Santiago Trujillo Report

0

srand(time(NULL)); no es una función, son más bien dos funciones: time() que devuelve el tiempo actual en segundos desde la época; y srand() que inicializa la semilla del generador de números aleatorios. Está inicializando la semilla del generador de números aleatorios al tiempo actual en segundos, lo cual es bastante razonable.

Sin embargo, tiene varios conceptos erróneos, en realidad solo necesita ejecutar srand una vez, o como máximo una vez cada pocos minutos, después de que rand() continuará generando más números aleatorios por sí solo, srand() es solo para establecer una semilla inicial para rand para empezar.

En segundo lugar, si realmente quiere hacer esto, aunque no veo por qué lo haría, podría usar una función que devuelva el tiempo a una mayor precisión. Yo sugeriría gettimeofday() para este propósito.

over 4 years ago · Santiago Trujillo Report

0

En Windows, puede usar GetTickCount() en lugar de time() . Cambia en intervalos de 50 ms (si recuerda correctamente).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!