El 6 de junio de 2011 10:27, <[email protected]> escribió: > El 02/06/11 09:13, vascocho escribió: > > Hola gracias por su ayuda aca va mi primer duda en un ejercicio de > > progrmacion. > > > > *Actividad a realizar > > > > *Escribir una función que devuelva la tirada de un dado de rol de n > caras. > > Se contemplan dados que no existirían físicamente como los de 5 caras. > > > > *El Ejercicio resuelto lo adjunte.* > > > > *Repuesta del profesor :* > > > > El ejercicio está bien, no debería colocarse el srand dentro de la > función o > > no tendrá aleatoriedad > > > > *Duda*: > > Donde colocar el srand. > > Te contesto en linea con varios comentarios ya que estamos. Son cosas > que se van aprendiendo y que esta bueno saber desde un principio, pero > nada loco. Igual se que es un archivo de ejercicio y muchos de los > comentarios seguramente ya los sabes, pero por las dudas. Otra cosa que > esta bueno es compilar con "-Wall" que te habilita todos los warnings. > > > 4.2a.cpp > > > > > > #include <conio.h> > > #include <iomanip> > > #include <iostream> > > #include <ctime> > > #include <cstdlib> > > Lo recomendado es poner solo los includes necesarios. > > > using namespace std; > > > > int dado(int x); > > int w; > > "int w;" esta al pedo (además que es global innecesariamente). > > > int main() { > > cout <<"\nEl resultado es: " << dado(w); > > En vez de "\n" poné "endl" y ponelo al final para que ponga el enter > después de la salida y no te quede el prompt pegado. Quedaría así: > > cout << "El resultado es: " << dado(w) << endl; > > > } > > int dado(int x)// > > { > > srand(time(NULL)); //se obtiene una distancia al azar > > int w=rand()%6+1; > > > > return (w); > > } > > Bueno, acá la parte que preguntaste. Como este programa da solo un > resultado cada vez que se ejecuta da lo mismo donde este puesto el > "srand". Igual tiene un problema que es que si ejecutas varias veces el > programa en el mismo segundo, time() te va a devolver lo mismo y la > semilla para srand va a ser la misma y por lo tanto el resultado > también. En vez de usar time() podes usar getpid() por ejemplo para la > semilla a srand y funcionaría mejor. > > Saludos > > Mmm... getpid ?
¿No te daría el mismo número de proceso si fuese el mismo programa? La semilla sería siempre la misma, no sería aleatorio. Sigo prefiriendo time.
