Занумеруем числа от
до
. возьмём
такое, что
и вперёд. за
бросаний будем определять двоичный номер числа. номера, большие
будем отбрасывать. остальные равновероятны. Немножко неэкономно при некоторых
Не, ну можно, конечно, слегка оптимизировать.
Допустим
. Получается, что 3 раза бросаем монетку, в
из
случаев результат отбрасывается и процедура начинается снова.
С другой стороны, если монетку подбросить
раза, то получается
исходов, всего на
больше чем
. Выбираем заранее в
-ти двоичных последовательностях длины
штук, делим их на
групп по три, значения случайной величины, равномерно распределённой на пятиэлементном множестве, определяем как результат попадания в одну из этих групп. Получается, что при четырёх бросаниях отбраковывается лишь
из
исходов. Выгода налицо!
Так что, лучше, наверное, такой алгоритм. Бросаем монетку непрерывно, после каждых
бросаний выделяем группы из
двоичных последовательностей длины
и смотрим попадание туда; как только попадаем --- процесс прекращается.