Генератор случайных событий.

Здравствуйте коллеги мне для создания одного проекта понадобился генератор случайных (false, true) битов. Суть его состоит так: допустим мы имеем переменную ULong в которой мы будем использовать только младшие 20 битов. Мне нужна случайная последовательность из 0 и 1 в которых количество битов равных нулю будет равна 10, а также количество битов равных единице будет тоже равно 10. При этом единицы и нули не должны повторяться 5 раз подряд. Функция С+ random(); мне не подходит т. к. не удовлетворяет данным требованиям. Может у кого есть такие наработки, при изучении функции random(); я выяснил что она генерит случайные числа в диапазоне от 0....32767 внизу я дал пример генератора случайных чисел в заданном пользователем диапазоне может кому сгодиться.