Liczby pseudolosowe i funkcje

0

Witam, chciałbym zapytać o liczby pseudolosowe. Z nazwy są to liczby pseudo czyli przy taki programie i trzech wywołaniach funkcji wychodzą zawsze 3 takie same liczby ( Czy dzieje sie tak dlatego że dane z zegara systemowego nie zmieniają się w ciągu tych 3 razy wykonania pętli?? ) ?? I dlaczego jak wpiszę 3 losowania (bez wykorzystania pętli) to wtedy liczby są różne?

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

void los ()
{
    srand ( time (NULL) );
    cout << ((rand() % 11 ) + 50 ) << endl;
}


int main ()
{
    srand ( time (NULL) );
    int a = 0;
    do 
    {
        los();
        cout << rand() << endl;
        a ++;
    }    while ( a < 3 );

    system ("pause");
    return 0;
}
1

srand() sie wywoluje raz.

0
n0name_l napisał(a):

srand() sie wywoluje raz.

No tak ale to jest uzależnienie losowania od zegara tak? (miejsce startowe jest wyznaczane poprzez zegar systemowy)

W czym jest ta różnica że jak wywołam ten program to wylosuje mi 3 takie same liczby a jak zamiast pętli dam

   los();
   los();
   los(); 

To w tym wypadku już liczby sa różne. Od czego to zależy?

2
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
int los()
  {
   return 50+rand()% 11;
  }
  
int los_srand()
  {
   srand(time(0));
   return los();
  }
 
 
int main ()
  {
   for(int i=0;i<3;++i) cout<<los_srand()<<' ';
   cout<<endl<<los_srand()<<' '<<los_srand()<<' '<<los_srand()<<endl;
   
   for(int i=0;i<3;++i) cout<<los()<<' ';
   cout<<endl<<los()<<' '<<los()<<' '<<los()<<endl;
   
   return 0;
  } 

http://ideone.com/OpOEzw

1 użytkowników online, w tym zalogowanych: 0, gości: 1