[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
Why am I not getting the results I expect...
Hi,
I have a piece of code where I generate a random number between 1 and n. I
also want to make sure that each random number is generated only once.
Here is a snippet of code:
int num_of_arts;
int display_article_number;
int * article_displayed; /* Flags stored here */
num_of_arts = 24;
/* Make enough space to store the flags */
article_displayed = (int *) calloc(num_of_arts, sizeof(int));
display_article_number = 1 + (int) (((float) num_of_arts) * random() /
(RAND_MAX+1.0));
while (*(article_displayed+display_article_number-1) == 1) {
display_article_number = 1 + (int) (((float) num_of_arts) * random() /
(RAND_MAX+1.0));
}
I expect this piece of code to generate a random number between 1 and 24.
But it also generates number > 24. What am I doing wrong? I got the algo
to generate a random number between 1 and n from the manpage for rand()
(not random()).
Thaths
--
Marge: Okay, but you've accomplished a lot! You've made me very happy.
Homer: Oh, yeah, they'll put me on a stamp for that!
Sudhakar C13n http://www.aunet.org/thaths/ Lead Indentured Slave