• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

254
Vistas
¿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.

about 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

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); }
about 3 years ago · Santiago Trujillo Denunciar

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.

about 3 years ago · Santiago Trujillo Denunciar

0

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

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda