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.

Responder a