Here's my ramdomize code:
int monstername;
monstername = rand() % 3;
but I want 0 with 70% of output 1 with 20% 2 with 10% how I can do this with C?
Here's my ramdomize code:
int monstername;
monstername = rand() % 3;
but I want 0 with 70% of output 1 with 20% 2 with 10% how I can do this with C?
int monstername;
int random_var = rand() % 10;
if(random_var < 7) {
// 0-70%
monstername = 0;
}
else if(random_var < 9) {
// 70-90% here
monstername = 1;
}
else {
// 90-100% here
monstername = 2;
}
Try
int monstername;
int rn = rand();
if (rn < 0.7*RAND_MAX)
monstername = 0;
else if (rn < 0.9*RAND_MAX)
monstername = 1;
else
monstername = 2;
Assuming you don't care about modulo bias, you want something like:
int monstername;
int r = rand() % 10;
if (r < 7)
monstername = 0;
else if (r < 9)
monstername = 1;
else
monstername = 2;
If you do care about modulo bias, look into arc4random_uniform(3)
instead of rand(3)
.