Yes, thank you.
I now know from experience with my program the rand() is pseudorandom, and I got the feeling it's kind of predictable.
If it is the case, then I can simulate that using my own function:
Code:
int myrandom (void);
int my_rand_number;
int main (void) {
myrandom();
printf("%d\n", my_rand_number);
}
int myrandom (void) {
my_rand_number++;
if (my_rand_number == 100) { //100 myrand max
my_rand_number = 1;
}
return my_rand_number;
}
The rand() does not only return the same first value again and again, but also the result of a loop don't change, and it is not really fair:
Windows |
Linux |
|
|
1 rolled 177 times.
2 rolled 147 times.
3 rolled 158 times.
4 rolled 183 times.
5 rolled 177 times.
6 rolled 159 times. |
1 rolled 153 times.
2 rolled 177 times.
3 rolled 149 times.
4 rolled 183 times.
5 rolled 178 times.
6 rolled 161 times. |
Code:
int main (void) {
int my_dice_row[7] = {0,0,0,0,0,0,0};
int i;
for(i = 0; i <= 1000; i++){
int tmp = (int) (rand() * 6.0 / (RAND_MAX + 1.0)) + 1;
switch (tmp){
case 1: my_dice_row[1]++; break;
case 2: my_dice_row[2]++; break;
case 3: my_dice_row[3]++; break;
case 4: my_dice_row[4]++; break;
case 5: my_dice_row[5]++; break;
case 6: my_dice_row[6]++; break;
}
}
for(i = 1; i <= 6; i++){
printf ("%d rolled %d times.\n", i, my_dice_row[i]);
}
}