Foro de elhacker.net

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
  1. /* Está programado en ubuntu, no se si eso canviara algo*/
  2. #include <iostream>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. int main () {
  8.  int number = (rand() % 100);
  9.  int introducedNumber;
  10.  
  11.  while (cout << "Try to guess the number: ") {
  12.  cin >> introducedNumber;
  13.  
  14.  if (introducedNumber == number) {
  15.    cout << "YOU WIN :)" << endl;
  16.  }
  17.  if (introducedNumber < number) {
  18.    cout << "Too low :(" << endl;
  19.  }
  20.  if (introducedNumber > number) {
  21.    cout << "Too High :(" << endl;
  22.  }
  23. }
  24.  return 0;
  25. }

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
  1. #include <ctime>
  2. #include <cmath>
  3.  
  4. int main(){
  5.    srand(time(0));
  6. }

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.