Altijd dezelfde random nummers?!

Status
Niet open voor verdere reacties.

NielsDesmet

Gebruiker
Lid geworden
19 mei 2008
Berichten
301
Ik heb een test-programma gemaakt waarin er 10 random nummers gegenereerd worden, en ze worden allemaal onder elkaar gezet. Dit werkt goed, tenminste als je het maar 1 keer test! Want het blijkt dat die nummers gewoon altijd dezelfde zijn, zelfs na een paar keer executen.
Wat doe ik fout?
 
Echt random bestaat bij computers niet. De randomfunctie is gewoon een hele ingewikkelde wiskundige berekening die een schijnbaar random lijst geeft.
Alleen heeft die berekening een bepaalde 'startwaarde' nodig, de zogenaamde seed. Zolang de seed gelijk blijft zal ook de random-reeks identiek zijn.

Een veelgebruikte techniek is om te seeden op de huidige tijd, wat voor de meeste applicaties een voldoende randomheid geeft.
De functie om te seeden is srand(). De tijd oproepen kan dmv van time() uit de header ctime. Let er wel op dat de functie time() slechts tot op de seconde werkt..
 
Laatst bewerkt:
Zoals Johantrax zegt:

Code:
#include <ctime>
#include <windows.h>
#include <iostream>

int main()
{
  srand(GetTickCount());
  std::cout << (rand()%256) << '\n';
  return 0;
}
 
Dus, voor alle duidelijkheid, srand() is een functie waarmee je eigenlijk het getal definieert waar rand() zich op baseert?

OK, maar juist 1 vraagje: Wat als je dat tijd-trucje gebruikt en je wilt op precies dezelfde tijd verschillende keren "seeden"?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan