rand( ) does not give me random numbers??

Started by
5 comments, last by Eckker 22 years ago
I''m writing some simple code to give me six numbers between 1 and 49. However, whenever I call my CreateNumbers function it always gives me the same number. I put in some code to ensure that if the same number comes up it picks another number until it is different. This just causes the program to do nothing. I''m assuming because I''m causing it to go on in a continuous loop because it always picks the same numbers. If anyone can help it would be much appreciated. Also if anyone would care to suggest how I can make my code any simpler please feel free. Here''s my code. /* Create Numbers.h */ int CreateNumbers(void); /* CreateNumbers.cpp*/ #include "CreateNumbers.h" #include <time.h> #include <stdlib.h> #include <iostream> int CreateNumbers () { /* set rand seed */ srand ((int)time (0)); int Created; Created = (rand () % 48) +1; return (Created); } /* main.cpp */ #include <iostream> #include <stdlib.h> #include "CreateNumbers.h" #include <ctime> int main () { int Numbers[6]; int i; int response; int start=0; bool check=false; srand (time(NULL)); std :: cout <<"Welcome to the Lottery Wizard.\n"; std :: cout <<"How many lines would you like me to predict?\n"; std :: cin >> response; /* loop according to response */ for (start=0; start<response; start++) { /* Call CreateNumbers Function and check for repeated numbers*/ Numbers[0] = CreateNumbers(); Numbers[1] = CreateNumbers(); while (Numbers[1]==Numbers[0]) { Numbers[1]=CreateNumbers(); } Numbers[2] = CreateNumbers (); while ((Numbers[2]==Numbers[1])||(Numbers[2]==Numbers[0])) { Numbers[2] = CreateNumbers(); } Numbers[3] = CreateNumbers (); while ((Numbers[3]==Numbers[2])||(Numbers[3]=Numbers[1]) ||(Numbers[3]==Numbers[0])) { Numbers[3] = CreateNumbers(); } Numbers[4] = CreateNumbers (); while ((Numbers[4]==Numbers[3])||(Numbers[4]==Numbers[2]) ||(Numbers[4]==Numbers[1])||(Numbers[4]==Numbers[0])) { Numbers[4]=CreateNumbers(); } Numbers[5] = CreateNumbers (); while ((Numbers[5]==Numbers[4])||(Numbers[5]==Numbers[3]) ||(Numbers[5]==Numbers[2])||(Numbers[5]==Numbers[1]) ||(Numbers[5]==Numbers[0])) { Numbers[5] = CreateNumbers(); } std :: cout << std :: endl; std :: cout << Numbers[0] << std :: endl; std :: cout << Numbers[1] << std :: endl; std :: cout << Numbers[2] << std :: endl; std :: cout << Numbers[3] << std :: endl; std :: cout << Numbers[4] << std :: endl; std :: cout << Numbers[5] << std :: endl; } return (0); } Thanks.
Advertisement
Only call srand once at the beginning of the program.

Sorry, I originally only had srand in CreateNumbers.cpp. I put it in twice when I was messing with it.

It still gives me the same number each time though. I''ve tried putting it in main or CreateNumbers.cpp and same thing happens.

Confused????
I also suggest that you use namespace std instead of having to call std every time you use cout cin etc.

(insert using namespace std; under your includes)


www.wretchedpenguin.com

[edited by - penguin on April 21, 2002 1:56:37 PM]

[edited by - penguin on April 21, 2002 1:57:16 PM]
This could be the problem (if it isn't a typo in your post) :

  while ((Numbers[3]==Numbers[2])||(Numbers[3]=Numbers[1])  


You've used a single equals sign (assignment) instead of a double one (for equality testing). The expression ](Numbers[3]=Numbers[1]) will always evaluate to TRUE (because all of your numbers are non-zero) so it'll never get out of that while loop.


Iain Hutchison
Programmer, Silicon Dreams
The views expressed here are my own, not those of my employer.

[edited by - pieman on April 21, 2002 4:09:44 PM]
Iain HutchisonProgrammer, Silicon DreamsThe views expressed here are my own, not those of my employer.
Ah ha!! It wasn''t a typo. Thanks very much.

I''ve got my code working nicely now with the sugguestions.

I checked my code but I think when you''re a newbie you always assume that the logic behind your code is wrong and not just a simple type error.

Thanks.
Does your code just produce different numbers per each line? Or for every line?
I''m a beginner in C++ ^_^

This topic is closed to new replies.

Advertisement