В настоящее время я использую случайное число и серию операторов if, чтобы назначить указатель на один из четырех списков, используя следующее:
struct listinfo//struct holds head, tail and the number of entries for the n2l, norm, known and old lists
{
struct vocab * head;
int entries;
struct vocab * tail;
};
...
int list_selector=0;
struct listinfo * currentlist = NULL;
//select a list at random, using the percentage probabilities in the if statements.
//FISH! Can this be done with a switch and ranges?
list_selector = (rand() % 100)+1;
if (list_selector<33) currentlist = &n2l;
if (list_selector>32&&list_selector<95) currentlist=&norm;
if (list_selector>94&&list_selector<100) currentlist = &known;
if (list_selector==100) currentlist = &old;
Мне просто интересно, есть ли более удобный способ сделать это, используя диапазоны в коммутаторе, как в этом вопросе.
Если это так, пример будет отличным. Любые дополнительные советы также будут высоко оценены.
Редактировать: Исправлено! Ссылка на неправильную страницу вместо this .