Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

364
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda