Попробуйте подойти к проблеме с противоположной стороны - то, что вы пытаетесь сделать, эквивалентно "найти n чисел в диапазоне 0-31".
Предположим, вы пытаетесь найти 4 числа. Вы начинаете с [0,1,2,3], а затем увеличиваете последнее число каждый раз (получая [0,1,2,4], [0,1,2,5] ...), пока не достигнете предела. [0,1,2,31]. Затем увеличьте предпоследнее число и установите последнее число на единицу больше: [0,1,3,4]. Вернитесь к увеличению последнего числа: [0,1,3,5], [0,1,3,6] ... и т. Д. Как только вы достигнете конца, вы вернетесь к [0,1,4 , 5] - в конце концов вы достигнете [0,1,30,31], после чего вам придется вернуться на один шаг дальше: [0,2,3,4] и снова идти дальше. Продолжайте, пока, наконец, не получите [28,29,30,31].
Учитывая набор чисел, их легко преобразовать в 32-битные числа.