c# - Probability and Random number generator -


i'm working on problem involves probability , random number generator believe close need hammering out 1 last thing. have marble bag in enter number of marbles of different color. meaning red 10 green 5 blue 5 orange 3. have infer probability of each colored marble, randomly generate number of marbles based on probability. far can calculate probability

  int marblecnt = red + green + blue + orange;   double probred = (double)red / marblecnt;   double probgreen = (double)green / marblecnt;   double probblue = (double)blue / marblecnt;   double proborange = (double)orange / marblecnt; 

then plan use random().nextdouble used decipher out marble picked code:

for (int = 0; < 10; i++) {     double randnum = mrandom.nextdouble();                  if (0 <= randnum && randnum < probred) { probarr[i] = red_marble; }     else if (probred <= randnum && randnum < probgreen) { probarr[i] = green_marble; }     else if (probgreen <= randnum && randnum < probblue) { probarr[i] = blue_marble; }     else  { probarr[i] = orange_marble; } } 

my issue do if have same number of marbles, meaning have 10 red , 5 blue , 5 orange need decipher pick blue or orange.

personally, wouldn't use double @ - i'd pick random integer between 0 (inclusive) , total number of marbles (exclusive). effectively, you'd "labelling" each marble number, , working out marble picked based on random integer. example:

marblecolor pickmarble     (random rng, int redcount, int greencount, int bluecount, int orangecount) {     int index = rng.next(redcount + greencount + bluecount + orangecount);     if (index < redcount)     {         return marblecolor.red;     }     if (index < redcount + greencount)     {         return marblecolor.green;     }     if (index < redcount + greencount + bluecount)     {         return marblecolor.blue;     }     return marblecolor.orange; } 

this same approach you've got doubles, simpler (imo) understand.


Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -