Srand para que den dos numeros diferentes?

Iniciado por Anastacio, 16 Febrero 2012, 20:35 PM

0 Miembros y 1 Visitante están viendo este tema.

Caster

No me meto el tema ya que no puedo ayudar pero te doy unos consejos:

-Cuando escribas code hazlo en la etiquetas Geshi.
-Si declaras variables de mismo tipo, hazlo a la vez.

int x; int y; int z;

-Tambien pudes asignarle el valor cuando las declaras y no después.

int x = 1; int y = 2; int z = 2;

No te lo digo por mal, pero es para que ordenes mejor tu código, sea más fácil de programar y, posteriormente, de entenderlo.

rir3760

Cita de: Anastacio en 19 Febrero 2012, 19:41 PMAhi esta el Code.

Llamarlas no me cuesta. Entenderlas para que me servirian, me cuesta.
El problemas es, al tratar de avanzar demasiado rápido en tu aprendizaje, estas ignorando (por trolling o de forma genuina, no lo se) las recomendaciones que se te dan. Casi al punto de parecer esto un monologo.

Veamos:

En mi primer mensaje indico:
Cita de: rir3760 en 17 Febrero 2012, 01:22 AMY casi puedo asegurar que tu error es colocar la llamada a srand justo antes de la llamada a rand: esa es la única explicación para obtener dos veces el mismo numero con llamadas consecutivas a función.

Y si revisamos el código fuente que acabas de publicar:
srand( (unsigned)time( NULL ) ); /* <== */
num1 = rand() % nivel;           /* <== */
getchar();
srand( (unsigned)time( NULL ) ); /* <== */
num2 = rand() % nivel;           /* <== */
getchar();


Lo que debes hacer es llamar una única vez a "srand", esto al principio del programa. Después solo llamas a "rand" cuando necesites el siguiente numero de la serie. Por ejemplo:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NUM_ELEM 16

int main(void)
{
   int i;
   
   /* Definimos la semilla utilizando la hora actual */
   srand((unsigned) time(NULL));
   
   /* Impresion de valores en el rango 0 .. NUM_ELEM - 1 */
   for (i = 0; i < NUM_ELEM; i++)
      printf(" %d", rand() % NUM_ELEM);
   putchar('\n');
   
   return EXIT_SUCCESS;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Anastacio

No, mi estupidez es genuina.

Entonces hay que ponerlo al principio, entonces, despues llamo a rand.

Lamento si les cause molestias, no entendia bien.

Muitas gracias
You, stop to close my post, you were novice too!!!!!!!!!!!!