My function which just randomly adds to bins is producing some numbers that make no sense such as negatives, huge numbers, or nothing is being added. I am confused because I add by 1 and within a controlled for loop.
#include <stdio.h>
#include <stdlib.h>
double seed;
int bins, i, r, j, a, index;
long samples;
int main(void) {
puts("seed?");
if (scanf("%lf", & seed) != 1) {
puts("bad input");
return 0;
}
puts("how many samples?");
if (scanf("%ld", & samples) != 1 || samples <= 0) {
puts("bad input");
return 0;
}
puts("how many bins?");
if (scanf("%d", & bins) != 1 || bins <= 0) {
puts("bad input");
return 0;
}
int arr1[bins];
int arr2[bins];
int rarr[bins];
srand(seed);
for (i = 0; i < bins; i++) {
rarr[i] = (((i + 1) / bins) * RAND_MAX);
}
for (i = 0; i < samples; i++) {
r = rand();
index = r % bins;
arr1[index] += 1;
for (j = 0; j < samples; j++) {
if (r < rarr[j]) {
index = j;
break;
}
}
arr2[index] += 1;
}
puts("counts using remainder method:");
for (i = 0; i < bins; i++) {
printf("(%d) %d\n", i, arr1[i]);
}
puts("counts using quotient method:");
for (i = 0; i < bins; i++) {
printf("(%d) %d\n", i, arr2[i]);
}
return 0;
}
Aucun commentaire:
Enregistrer un commentaire