1. Вычисляем общее количество комбинаций ("масок" нулов/не-нулов: от "все нулы" до "все не-нулы" на заданном множестве: количестве строк). Это будет 100% всего диапазона.
2. 10%, 20%, 50% - каждый 10-й, каждый 5-й, каждый 2-й, соответственно.
3. Начнём с самого частого (50%) и через 1 (каждый 2-й) составим список.
4. Возьмём следующий (20%) и применим к оставшейся половине (так же равномерно, учитывая половину - за 100%) и присоединим к списку.
5. Возьмём оставшийся процент (10%) и применим к оставшимся 30% - это будет каждый 3-й элемент и тоже присоединим к списку.
Полученный список - будет то, что требовалось.