random nummer

Posts 1–9 of 9 · Page 1 of 1
random nummer
in the tutorial i am using was a program that generates a random number above 20.000
the problem is the output is always 26500 and that isn't that random anymore after a few times.

the questions are:

1. why are the nrs not random?

2. how does rand () work?

here is the code

#include <iostream>
#include <cstdlib>
using namespace std;

int main ()
{
int i;
int r;

r = rand ();

for(i=0; r<= 20000; i++) r = rand ();

cout << "Number is " << r << ". It was generated on try " << i << "." <<endl;

system ("pause");

return 0;
}
edit: title wrong nummer is dutch, i forgot to write number. -.-
rand generates a number between 0 and RAND_MAX.
srand sets the seed.

heres an example:
Code:
#include <windows.h>
#include <iostream>
#include <ctime>    // For time()
#include <cstdlib>  // For srand() and rand()

int main()
{
	srand(time(0));//initialize the random generater using time
	cout<<"randoms:\n";
	for(int counter = 0; counter <10; counter++)
		printf("%d\n", rand()); //print out random numbers
	system("pause");
	return (0);
}
Quote Originally Posted by Hell_Demon View Post
rand generates a number between 0 and RAND_MAX.
srand sets the seed.
i understand rand but why does it generate the same number all the time.
srand i dont understand what does "sets the seed" means?
(misschien snap ik de nederlandse uitleg wel)
Quote Originally Posted by lalakijilp View Post
i understand rand but why does it generate the same number all the time.
srand i dont understand what does "sets the seed" means?
(misschien snap ik de nederlandse uitleg wel)
Random is niet mogelijk op computers, die moeten altijd iets volgen, dus daarom hebben ze voor rand een enorme lijst getallen waar hij er in een bepaalde volgorde een uit kiest.
Omdat hij altijd op dezelfde plek begint krijg je dezelfde rij getallen eruit.
Met srand(time(0)) zet hij de seed(plaats in de rij waar hij begint) op de plek van de huidige tijd neer, en aangezien je het programma nooit 2x op dezelfde tijd kunt aanzetten krijg je steeds een andere getallenreeks eruit.

ik geloof dat time(0) in miliseconden na de start van je computer is, maar dat weet ik niet helemaal zeker.

edit: als je getallen tussen de 0 en de 1000 wil gebruik the 'rand()%1000'
getallen boven 20000 zou met rand()+20000 kunnen.
Quote Originally Posted by Hell_Demon View Post
Random is niet mogelijk op computers, die moeten altijd iets volgen, dus daarom hebben ze voor rand een enorme lijst getallen waar hij er in een bepaalde volgorde een uit kiest.
Omdat hij altijd op dezelfde plek begint krijg je dezelfde rij getallen eruit.
Met srand(time(0)) zet hij de seed(plaats in de rij waar hij begint) op de plek van de huidige tijd neer, en aangezien je het programma nooit 2x op dezelfde tijd kunt aanzetten krijg je steeds een andere getallenreeks eruit.

ik geloof dat time(0) in miliseconden na de start van je computer is, maar dat weet ik niet helemaal zeker.
volgens mij begin ik het te begrijpen.

dus hij heeft een vast lijst in zijn geheugen

54
12
98
2356
542
21

met rand begint hij bij de eerste.
en met de 2de rand de 2de enz.

met srand verander je dus de plek waar hij begint. toch?
Quote Originally Posted by lalakijilp View Post
volgens mij begin ik het te begrijpen.

dus hij heeft een vast lijst in zijn geheugen

54
12
98
2356
542
21

met rand begint hij bij de eerste.
en met de 2de rand de 2de enz.

met srand verander je dus de plek waar hij begint. toch?
ja dat klopt helemaal(post was te kort xD)

edit: srand hoef je maar 1 keer te doen als je het programma start. dus je hoeft niet voor elke rand() srand gebruiken.
Quote Originally Posted by Hell_Demon View Post
ja dat klopt helemaal(post was te kort xD)
nu is het probleem dat hij gewoon de tijd kopieert wat kun je daar aan doen?

edit:
opgelost je moet eerst het getal voor de loop tussen de duizend maken dan doet hij het wel
en is hij niet na 0 keer proberen klaar
Code:
#include <windows.h>
why do you have this code in your program??? what does it do?
Quote Originally Posted by lalakijilp View Post
Code:
#include <windows.h>
why do you have this code in your program??? what does it do?
gives acces to a lot of windows related functions, when i create a new cpp file it asks if i want to add the 'default' stuff:
Code:
//uncomment the ones needed
//#include <windows.h>
//#include <iostream>
//using namespace std;
its part of my vc++ 2003.net hook, adds a lot of extra stuff to it
Posts 1–9 of 9 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

Talk with us