Надеюсь, я правильно понял вопрос.
Я собираюсь использовать T для успеха, F для неудачи. Я поместил следующий бит в поле кода для правильного форматирования. Он показывает, каков будет результат и каковы кумулятивные вероятности, если вы дадите рефлекс только для определенных результатов.
. T % F %
First fair coin flip 50% 50%
Reflip only if the result was T 25% 75%
Reflip AGAIN only if F 37.5% 62.5%
Reflip AGAIN only if T 31.25% 68.75%
etc, etc
Вы видите, куда я иду? Если вы это сделаете, иди код сейчас.
Вам нужна функция Reflip, которая принимает в качестве аргументов результат последнего броска и честную монету. Он подбрасывает монету и возвращает результат, если он совпадает с последним, в противном случае он вызывает себя снова с новым результатом. При первом обращении к нему следует использовать F в качестве начального результата. Теоретически, функция может продолжаться бесконечно, но это то, что вам нужно, чтобы сгенерировать 1/3, поскольку она не рациональна.
Существует плагин энергии, названный matchit.vim. Можно найти его здесь: http://www.vim.org/scripts/script.php?script_id=39. Это было создано в значительной степени точная цель, которую Вы описываете.
Установка, что, установите свой курсор на тело тега (не <>, еще это будет соответствовать им), и нажмите % для перехода к другому тегу. Посмотрите страницу сценария для обнаружения то, чему еще она соответствует.