Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: anonym2003 en 22 Febrero 2017, 21:10 PM

Título: problema en rand()
Publicado por: anonym2003 en 22 Febrero 2017, 21:10 PM
Código (cpp) [Seleccionar]
/* Está programado en ubuntu, no se si eso canviara algo*/
#include <iostream>
#include <cstdlib>

using namespace std;

int main () {
 int number = (rand() % 100);
 int introducedNumber;

 while (cout << "Try to guess the number: ") {
 cin >> introducedNumber;

 if (introducedNumber == number) {
   cout << "YOU WIN :)" << endl;
 }
 if (introducedNumber < number) {
   cout << "Too low :(" << endl;
 }
 if (introducedNumber > number) {
   cout << "Too High :(" << endl;
 }
}
 return 0;
}


El valor aleatorio siempre es 83, como puedo solucionar eso? Gracias.
Título: Re: PROBLEMA EN RAND()
Publicado por: ivancea96 en 22 Febrero 2017, 22:55 PM
Hay que ponerle una semilla a la función rand, con la función srand().

La semilla debe ser lo más aleatoria posible. normalmente, se utiliza el tiempo  (que rara vez va a ser igual).

Código (cpp) [Seleccionar]
#include <ctime>
#include <cmath>

int main(){
    srand(time(0));
}


Solo llamas a srand 1 vez por programa (salvo que realmente quieras hacerlo más veces, vaya)
Si llamas a srand con la misma semilla otra vez, los números que saldrán serán los mismos de nuevo.