Оригинал материала находится по адресу www.computerra.ru/124622/stochastic-life/
29.05.2015

Жизнь по генератору случайных чисел: стратегия успеха

Признаюсь, меня редко «цепляют» игрушки. Ни настольные, ни компьютерные, давно уже не вызывают того памятного по детству энтузиазма, который заставлял когда-то проводить дни напролёт за «Монополией» или в Lode Runner. Поэтому когда я уцепился за крошечную фигурку, извлечённую женой из «Киндер-сюрприза», супруга, кажется, была поражена не меньше моего. А я вертел и не мог насмотреться вот на эту (см. ниже) модель какого-то, полагаю, супергероя комиксов. Если нажать ему на ноги, спрятанное внутри колёсико-маховик прокрутится и покажет на лбу одну из нанесённых на колесе цифр. Фокус в том, что движется оно ещё некоторое время после того, как вы перестаёте прикладывать усилие, так что угадать цифру невозможно. Да, такой вот оригинальный генератор случайных чисел.

А случайные числа — штука удивительная, парадоксальная. Мы знакомимся с ними рано, чуть ли не в детсадовском возрасте, и пользуемся всю жизнь — но и сейчас ещё найдётся такое их свойство, которое вас удивит, и именно о нём сегодняшний рассказ. А корни его тоже следует искать в детстве — где нас обучают одной стороне случайностей, но не учат другой.

Та самая фигурка.

Для ребёнка и подростка случайные числа — способ добавить непредсказуемости в ограниченный взрослыми мирок. Игрушка, о которой шла речь выше, конечно, не самый лёгкий способ случайность получить. Монетка, игральный кубик, сумма выброшенных на пальцах чисел, позже — тасованная колода, рулетка: всё это проще и понятней. Ребёнок не ищет в случайностях глубокого смысла, он понимает и применяет их непосредственно, как указание на количество полей в настольной игре, выигравшую или снятую с поля ставку. Но именно здесь формируется наше взрослое к ним отношение. Мы привыкаем к мысли, что случайность способна заменить нас при принятии решений. И в то же время привыкаем исполнять указания кубика без попыток на него повлиять: если уж случай указал направление, следуй беспрекословно!

Поцеловать Лену или Алёну (а может быть обеих?!), есть тушёную капусту или не есть, пойти на урок или прогулять? В какой институт поступить, какие цифры вычеркнуть в лотерейном билете, какую вакансию предпочесть, вложиться ли в бумагу X, заводить ли детей сейчас? И так далее, и так далее: трудные решения преследуют нас всю жизнь, меняется только тяжесть последствий. Генератор случайных чисел поэтому — особенно для нерешительных — святой грааль, позволяющий сбросить с плеч груз ответственности: даже если выбранный вариант окажется неудачным, вы в этом не виноваты, вы только следовали указанию «судьбы», численно выраженному генератором.

Да, человек рациональный посмотрит на «жизнь по ГСЧ» презрительно: довериться тупой, слепой железке?! Такой человек как правило знает о случайностях чуть больше «начального жизненного курса». Он знает, что выдать по-настоящему случайное число для цифровой системы катастрофически трудно (почему алгоритмические генераторы и называют псевдослучайными), знает, что в качественном потоке случайных чисел каждое следующее не зависит от предыдущих (а потому нет смысла пытаться обыграть лотерею или биржу, изучая прошлые ряды цифр), наконец, если он рационален, то и не суеверен, а потому не доверит решение важных вопросов монетке, которая по определению ничего не может знать о проблемах, стоящих перед игроком, и которая к тому же с равной вероятностью даст решку или орла, то есть в пределе обеспечит одинаковое количество выигрышных и проигрышных комбинаций.

Чего такой человек не знает, так этого того, что чтобы идти по жизни успешно, знать не нужно почти ничего — и «знаний» монетки или компьютерного ГПСЧ для этого вполне достаточно. Не верите? И не надо. Давайте поставим численный эксперимент, чтобы вы смогли убедиться лично.

Нам понадобится какая-нибудь простейшая среда программирования. Постоянные читатели знают мою любовь к бейсику — и, полагаю, простят мне, что и сегодня я выберу его. Но на этот раз я пущусь во все тяжкие и воспользуюсь своим абсолютно самым любимым диалектом, с которого, как мне кажется, были списаны многие бейсики восьмибитной эпохи. А именно GW-BASIC образца почти тридцатилетней давности, разработки Microsoft. И не какой-нибудь эмулятор, а самый настоящий оригинальный продукт. Качайте его из архива (например, через Wayback Machine), далее, если вы в Linux, ставьте DOSbox (sudo aptitude install dosbox) и запускайте (dosbox GWBASIC.EXE), если вы в MS Windows, полагаю, можно воспользоваться командной строкой. Выход из интерпретатора — ветхозаветной командой «system».

GW-BASIC хорош тем, что прощает вольности форматирования, а кроме того, когда в век терабайтов и гигагерц лицезреешь на экране строчку «60300 bytes free», как-то сразу настраиваешься на серьёзный лад. Но, собственно, вот и программа. Всё элементарно. «Бросаем монетку», то есть генерируем случайное число от 0 до 0.999, и на основании этого будто бы принимаем участие в каком-то предприятии, которое либо приносит нам случайную прибыль, либо лишает нас опять же случайной суммы.

Да, параллель с реальностью весьма условная, но для имитации «жизни по генератору случайных чисел» она сгодится. Смысл в том, чтобы прогнать эксперимент достаточно большое число раз и оценить среднестатистический выигрыш: иначе говоря, если бы мы могли прожить тысячу жизней, в каждой из которых случайно приняли бы сотню важных решений, остались бы мы в среднем в выигрыше или в проигрыше?

10 MEDIAN=0

15 FOR Q=1 TO 10000 REM Lifes

20 TOTAL=0 REM Money

25 FOR I=1 TO 100

30 M=RND

35 IF M<0.5 THEN N=INT(10*RND)

40 IF M>=0.5 THEN N=-INT(10*RND)

45 TOTAL=TOTAL+N

50 NEXT I

55 MEDIAN=MEDIAN+TOTAL

60 PRINT Q,"MEDIAN="MEDIAN/Q

65 NEXT Q

Результат, впрочем, оказывается не тем и не другим: чем больше виртуальных жизней прожито, тем ближе медиана к нулю. Иначе говоря, слепо доверившись монетке, мы с равной вероятностью окончим отдельную жизнь глубоко в долгах или купаясь в роскоши, среднестатистический же результат будет нулевым. Такая стратегия покажется ещё менее привлекательной, если приблизить нашу модель к реальности, введя в неё ограниченный бюджет: в настоящей жизни мы ведь не можем сидеть в бесконечно больших долгах! Что вроде бы и требовалось доказать.

Однако на этом эксперимент не закончен. Я предлагаю внести в программу ещё одно изменение: ограничим возможный проигрыш в каждом отдельном случае фиксированной суммой — желательно, небольшой, желательно, привязанной к бюджету (как это любят делать биржевики). Сделать это просто: например, в строке 40 заменим число 10 на 1. Смысл: теперь даже при самом неблагоприятном исходе мы не сможем потерять за раз больше десяти процентов того, что надеемся заработать.

Прогон этой модели даст принципиально иной результат: мы окажемся в стабильном «плюсе»! Но не спешите обзывать автора «капитаном очевидность». На самом деле то, что мы реализовали эту стратегию в виде программы, поможет нам заметить несколько важных обстоятельств и сделать очень важный вывод.

Так вот, обстоятельство первое: наш генератор случайных чисел по-прежнему ничего не знает о том предприятии, в котором мы собираемся участвовать. Обстоятельство второе: ГСЧ точно так же ничего не знает о том, сколько мы надеемся заработать. Обстоятельство третье: единственное, что известно заранее, это максимальный размер убытка, после которого мы выходим из предприятия. И отсюда — вывод: даже не зная практически ничего о будущем И принимая решения с помощью монетки, реально добиться успеха.

Волшебное это свойство по-учёному называется опциональностью, что уводит нас к ценным бумагам. Сильно упрощая и применительно к нашему случаю, опцион — это такой контракт, торгуемый на биржах, который стоит недорого, имеет «срок годности», зато может сильно изменяться в цене, намного сильнее чем акции, на которые он выпущен. А стратегия, которую мы смоделировали выше, сводится к покупке опциона и продаже его, если он вздорожает за время жизни, либо выбрасыванию его в урну, если срок годности истёк, а цена так и не изменилась.

Главная прелесть опциона и, соответственно, опциональности в том, что они способны заменять знание. Вы только что убедились в этом сами. Желающих изучить вопрос глубже, я отсылаю к «Антихрупкости» Нассима Талеба, а также к биографии математика Эдварда Торпа и роли в ней критерия Келли. Тот же Талеб сформулировал и второе замечательное свойство опциональности: не нужно и не требуется рассматривать её исключительно в денежном контексте. Смотрите шире! Лучшая стратегия в жизни — стратегия с положительным матожиданием выигрыша, как сказали бы теоретики — сводится, во-первых, к отказу от мысли, что мы можем всё предсказать и контролировать, и во-вторых, к планомерной «покупке» дешёвых «опционов», регулярно подносимых судьбой.

И, поскольку мы не знаем о будущем ничего, выбор вполне можно предоставить генератору случайных чисел.

P.S. В статье использованы иллюстрации David, Gr8angel8, автора.


BASIC,сделай_сам,программирование,ГСЧ,Нассим_Талеб,Эдвард_Торп,критерий_Келли,игра,опцион,теория_вероятностей,случайность




Евгений Золотов, 1999-2018. Личный архив. Некоторые права защищены