Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: BJM en 17 Enero 2013, 19:48 pm



Título: Como utilizar dos veces la funcionn srand(time(NULL))
Publicado por: BJM en 17 Enero 2013, 19:48 pm
Debo generar primeramente dos valores aleatorios entre 0 y 1, si se genero 0 luego se debe generar otro numero aleatorio entre 0-9, si por el contrario se genero fue 1 luego se debe generar un numero aleatorio entre 0-5, pero siempre se generan los mismos numeros, a continuacion el codigo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<time.h>
  4.  
  5. main(){
  6.       int a,b,i;
  7.       for(i=1;i<=12;i++){
  8.       srand(time(NULL));
  9.       a=rand()%2;
  10.       printf("\n\n Valor aleatorio (0-1): %d",a);
  11.       if(a==0){
  12.       srand(time(NULL));
  13.       b=rand()%10;
  14.       printf("\n\n Valor aleatorio (0-9): %d",b);
  15.       }
  16.       else{
  17.           srand(time(NULL));
  18.           b=rand()%6;
  19.           printf("\n\n Valor aleatorio (0-5): %d",b);
  20.           }
  21.             }
  22.       printf("\n");
  23.       system("pause");
  24.       }


Título: Re: Como utilizar dos veces la funcionn srand(time(NULL))
Publicado por: durasno en 17 Enero 2013, 20:35 pm
La funcion srand solo tenes que usarla una vez y, para evitar confuciones, al principio del programa.. AL llamar tantas veces a srand estas reiniciando la semilla, lo cual provoca que se repitan los numeros


Saludos


Título: Re: Como utilizar dos veces la funcionn srand(time(NULL))
Publicado por: apuromafo CLS en 19 Enero 2013, 07:04 am
interesante lo que tienes que hacer para hacer en base 2, base 10, base 6

yo alguna vez tuve que hacer llamadas con srand

si te sirve el ejemplo lo tengo aca:
http://foro.elhacker.net/ingenieria_inversa/reto_crackme_6_de_flamer-t368430.15.html

saludos Apuromafo

pd:use arrays, asi lograba evitarme las confusiones de los valores posibles ^^


Título: Re: Como utilizar dos veces la funcionn srand(time(NULL))
Publicado por: Puntoinfinito en 19 Enero 2013, 11:58 am
Debes poner el srand(time(NULL)); tan solo una vez. Ponlo al principio del main o antes de comenzar...