Представьте, что запертые в одной комнате люди просто раздают друг другу деньги: каждый дает по доллару кому-то другому в случайном порядке. Как в итоге средства распределятся между этими людьми? Ответ может оказаться удивительным.

Задача: как распределяются деньги при случайной раздаче


Издание Decision Science News опубликовало материал с описанием необычного эксперимента:

«Представьте себе комнату, в которой одновременно находится 100 человек. У каждого из них есть по 100 долларов. Каждую секунду каждый из находящихся в комнате дает доллар одному случайно выбранному человеку. Как по прошествии некоторого времени распределятся деньги между всеми, кто есть в комнате?».

У большинства из тех, кто столкнулся с этой задачей, само собой возникло предположение, что в итоге все получат примерно поровну денег. Даже пять докторов наук, опрошенные Decision Science News, пришли к тому же первоначальному выводу. Но так ли это на самом деле?

Как выглядит распределение


То, как будут распределяться средства с течением времени, наглядно видно здесь.

image

Инфографика охватывает временной интервал в 5000 секунд. Ось Y показывает количество денег, которое есть у каждого из участников мысленного эксперимента. Отсчёт начинается с 45 долларов. На оси Х показано количество людей в комнате — 45 человек.

Красные столбцы показывают сколько денег есть у каждого человека в каждую секунду. Синие полосы призваны продемонстрировать, как распределяется богатство. Самый правый синий столбец соответствует самой высокой красной полосе и так далее.

Проверить результаты эксперимента самостоятельно можно с помощью следующего кода (понадобятся R, tidyverse и gganimate):

library(tidyverse)
library(gganimate)

NUMPLAYERS = 45
ROUNDS = 5000
INITWEALTH = 45

#initialize the bank
#columns wealths of the NUMPLAYERS players
#rows show wealths of each of the ROUNDS ticks of the clocks
bank = matrix(0, nrow = ROUNDS, ncol = NUMPLAYERS)
bank[1,] =  c(rep(INITWEALTH, NUMPLAYERS))

#function to give a dollar to someone other than oneself
get_recipient = function(player) {
  sample(setdiff(1:NUMPLAYERS, player), 1)}

#execute trades and update the ledger 
for (i in 2:ROUNDS) {
  #every player with wealth chooses another person to receive a buck
  recipients = sapply(which(bank[i - 1,] > 0), get_recipient)

  #table of the dollars owed each person
  count_table = table(recipients)
  
  #get the indices of the people owed money
  indices = as.integer(names(count_table))
  
  #everyone gives up a dollar, unless they are at zero
  bank[i,] = ifelse(bank[i - 1,] > 0, bank[i - 1,] - 1, bank[i - 1,])
  
  #selected people receive dollars
  bank[i, indices] = bank[i, indices] + count_table
}

####################Animate it
#Make a suitable long data frame
df = as.data.frame(bank)
names(df) = 1:NUMPLAYERS
df = df %>%
  mutate(frame = 1:ROUNDS) %>%
  gather(person, wealth, 1:NUMPLAYERS) %>%
  mutate(person = as.numeric(person)) %>%
  arrange(frame) %>%
  group_by(frame) %>%
  mutate(rank = rank(wealth, ties.method = "random")) %>%
  ungroup() %>%
  gather(histtype,playerid,c(person,rank)) %>%
  mutate(histtype = sprintf("Ordered by %s", histtype))

p <- ggplot(df, aes(x = playerid, y = wealth, frame = frame, fill=histtype)) +
  theme_minimal() +
  theme(panel.grid.major.x = element_blank(),
        panel.grid.minor = element_blank()) +
  geom_rect(aes( xmin = playerid - .4, xmax = playerid +.4, ymin = 0, ymax = wealth)) +
  scale_x_continuous(breaks = 1:NUMPLAYERS) +
  coord_cartesian(xlim = c(0, NUMPLAYERS), y = c(0, 5 * INITWEALTH)) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x='players',y='dollars') +
  facet_wrap( ~ histtype,ncol=1) +
  theme(legend.position = "none")
p

#set options for the animation package. Need ImageMagick installed on your computer
animation::ani.options(nmax = ROUNDS,
                       convert = 'C:\\Program Files\\ImageMagick-7.0.6-Q16')
#save the movie
gganimate(p, "dollar_stacked.mp4", interval = .01)

Как видно, неравенство возникает даже при самом казалось бы безобидном сценарии. Поэтому необходимо следить за распределением финансов.

Останутся ли богатые вечно богатыми?


Математик Джордан Элленберг поясняет, что многие считают, будто при случайной раздаче все получат приблизительно поровну денег. На самом деле оказывается, что неравенство в распределении финансов появляется почти сразу же. Более того, оно сохраняется, пока люди продолжают раздавать друг другу деньги случайным образом.

Значит ли это, что в результате некоторые становятся богатыми и никогда не теряют своего высшего положения? Вовсе нет. Напротив, их благосостояние всё время меняется: каждый человек со временем то богатеет, то беднеет.

Таким образом, в долгосрочной перспективе все варианты распределения денег одинаково вероятны. Наблюдатели эксперимента смогут увидеть и ситуацию, в которой у одного человека в руках 9 901 доллар, а у прочих — по одному доллару, и распределение всех средств поровну, как в самом начале эксперимента.

Другие материалы по теме финансов и фондового рынка от ITinvest:


Поделиться с друзьями
-->

Комментарии (30)


  1. alexxxst
    11.07.2017 13:57
    +12

    Не та картинка.
    image


  1. AIxray
    11.07.2017 15:57
    +3

    Вот каков алгоритм заложен у функции Рандомизации(помним да, что функция random так же работает по определённому алгоритму), таков и получится результат, но чисто по человечески, в одном из случаев, понимаем и допускаем, что в конечном счёте лишь у одного человека сосредоточатся практически вся сумма денег, а у остальных оставшаяся — незначительная сумма.


  1. alexeykuzmin0
    11.07.2017 16:07

    Не такое уж и большое неравенство возникает: в моем тесте (100 человек, 10 млн+ эпох) медиана стабильно получается от 50 до 100% от изначальной суммы денег, в среднем, около двух третей.


  1. kokorins
    11.07.2017 16:25

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


    1. sashagil
      12.07.2017 01:14

      Попробую восполнить недостатки заметки — я читал про этот эксперимент исходную заметку на английском (плюс кое-что по ссылкам в обсуждении).

      1. Распределение богатства, которое устанавливается после достаточно большого количества итераций (и независимо от начального распределения) — распределение Гиббса, и этот факт выводится тем же способом, как в термодинамике. Краткое пояснение на английском этого вывода приводится в разделе 2 вот этой статьи (ну, там пересказ термодинамического вывода, варианты которого есть в википедии и много где ещё на русском). Я идею вывода поверхностно понимаю, но не уверен, что хорошо перескажу в коротком комментарии, так что решил не пересказывать. Форма распределения — обрезанный и нормированный в соответствии с постановкой эксперимента график экспоненты.

      2. Конечно, среднее количество денег у каждого участника — одно и то же, 100 долларов в исходной постановке с 100 участниками. Распределение же показывает, какую долю времени в среднем он проводит с такой-то суммой в кармане — более часто с меньшей, менее часто с большей. При этом, фиксированный шаг по абсциссе (деньги) даёт уменьшение среднего времени пребывания в этом состоянии (значение ординаты) в фиксированное количество раз — экспонента!


    1. sashagil
      12.07.2017 01:30

      Да, ещё один момент — по-моему, в теорвере соответсвующее распределение вероятностей называется геометрическим: рассматривая его как дискретное (а не непрерывное, как в термодинамике), мы видим геометрическую прогрессию.


  1. alexyr
    11.07.2017 16:43
    +1

    Откуда взялось 9901 в конце, если всего денег в эксперименте 45*45=2025?


    1. QDeathNick
      11.07.2017 16:55

      Тут два разных эксперимента смешались. В визуализации 45 по 45, а в начале в тексте 100 по 100.


      При 100 по 100, деньги могут в какой-то момент распределится так, что у 99 человек по рублю, а у одного всё остальное, 9901. Мне кажется вероятность такого состояния меньше, чем у состояния, когда вообще все деньги у одного. Но что-то ресурсы мозга на сегодня закончились.


      Поэтому необходимо следить за распределением финансов.
      По-моему либо это математический призыв к революции, либо попытка оправдать запрет криптовалют :)


      1. alexyr
        11.07.2017 17:18

        Моего похоже тоже… Перечитал вроде, но всё равно упустил!


      1. zeroWiNNeR
        12.07.2017 10:13

        Напротив, их благосостояние всё время меняется: каждый человек со временем то богатеет, то беднеет.


    1. MamontsevDS
      11.07.2017 17:09

      На графиках 45*45, а в тексте 100*100


  1. Mishootk
    11.07.2017 17:08
    +1

    Визуализируйте более насущную ситуацию. Абсолютно по теме обсуждаемой задачи.
    Коллектив в котором традиционно на день рождения все скидываются имениннику складывая в конверт фиксированную сумму от каждого. В идеальных условиях за год каждый человек сколько скинулся, столько и получил на свой праздник от других. В реальности фактором случайности выступают болезни, отпуска, командировки, отгулы, текучка кадров. Давайте исключим такой глобально подбивающий фактор, как отсуствие на празднике именинника (пусть он празднует позже, но каждый год подарок в конверте получает). Но все равно волею случая одним скидываются больше, другим меньше. Чувствую что не везет рожденным в сезон отпусков (глобально), сезонных эпидемий и командировок (если у фирмы периодические выезды привязанные к определенным датам ежегодно).


    1. QDeathNick
      11.07.2017 17:34

      Я могу точно заявить, не везёт тем, кто работает без отпусков и увольнений, т.е. системным администраторам, главным бухгалтерам и директорам. В моей практике эти должности с самой маленькой текучкой.
      Ну и наплевать на эти копейки, в течении года, зато в ДР очень кстати лишние деньги получить на кормление этих утекающих.


    1. DS28
      12.07.2017 07:16

      В сезон отпусков и проставляться меньше))
      Поэтому всё очень индивидуально.


    1. Areso
      12.07.2017 13:28

      Как бы поступил настоящей скряга: он бы положил деньги на депозит, в конце года у него бы остались проценты, а тело депозита он бы раздал обратно.


      1. alexeykuzmin0
        12.07.2017 14:11
        +2

        Превысит ли прибыль транзакционные расходы? К тому же, если ставка по депозиту ниже ставки дисконтирования для конкретного агента, становится выгоднее сегодня потратить, а потом заново собрать


    1. andersong
      12.07.2017 13:51

      Мне не везёт. Не помню случая, чтобы мне на ДР дарили конверт, хотя я исправно всем вкладываюсь.


  1. sutarmin
    11.07.2017 17:08
    +5

    Такая длинная гифка — это очень неудобно. Ни перемотать ни ускорить. Не делайте так, пожалуйста :)


    1. OlegOleg1980
      12.07.2017 10:13

      Оно того стоило :)


  1. lash05
    11.07.2017 20:51
    -1

    Модель не имеют отношения к реальному распределению денег, ибо богатый гораздо легче получит денег с бедного, чем наоборот.


  1. burdakovd
    11.07.2017 22:54
    +1

    > Таким образом, в долгосрочной перспективе все варианты распределения денег одинаково вероятны.

    Тяжело в это поверить.

    Например такой вариант: [10000, 0, 0, 0, ..., 0] имеет нулевую вероятность, потому что в него прийти невозможно ни из какого состояния.

    Такой [9999, 1, 0, 0, ..., 0] возможен, но в него можно прийти только из одного конкретного состояния только одним способом, поэтому я всё же думаю его вероятность меньше чем других распределений.


    1. QDeathNick
      12.07.2017 12:25

      Например такой вариант: [10000, 0, 0, 0, ..., 0] имеет нулевую вероятность, потому что в него прийти невозможно ни из какого состояния.

      Не написано, что себе нельзя передавать, поэтому состояние возможно.


  1. NoRegrets
    11.07.2017 23:20
    +1

    Я все понял, что бы стать богатым, нужно меньше отдавать и больше получать. КО. )


  1. sotnikdv
    12.07.2017 04:22

    Дык классика же теорвера, что если случайным образом распределять что-то, то распределится не идеально равномерно.

    Вот и статья тут была подобная https://habrahabr.ru/post/163621/


    1. knagaev
      14.07.2017 15:39

      Я тоже сразу вспомнил про ту статью и хотел написать комментарий, но решил сначала просмотреть все комментарии, что кто-нибудь должен почувствовать ассоциацию.
      И не ошибся, что приятно :)
      И та статья намного интереснее.


  1. klaim
    12.07.2017 10:12

    Сделаем предположение, что:
    1. у участников достаточно много денег и они никогда не уходят в минус;
    2. реципиенты выбираются случайно, независимо и с равномерным распределением вероятности получения доллара от каждого участника;
    Заметка — в такой постановке начальное количество долларов и факт отдачи доллара на результат не влияют.
    Тогда распределение количества денег, полученных каждым участником на очередном ходе будет стремиться к нормальному при увеличении числа участников. И уж тем более, при значительном количестве ходов сумма денег, полученных каждым участником, будет случайной величиной с нормальным распределением.
    Именно это мы можем наблюдать на картинках.
    Код в Wolfram Mathematica:
    populationSize = 45;
    len = 5000;
    res = Sort[
    Tally[Flatten[
    RandomChoice[
    Range[populationSize], {len, populationSize}]]]][[All, 2]] -
    5000;
    ShapiroWilkTest[res]
    ListPlot[Sort[res]]
    Histogram[res]


    1. alexeykuzmin0
      12.07.2017 12:12

      А почему с нормальным? Выше про Гиббса писали


      1. klaim
        12.07.2017 12:47
        +1

        Потому что иногда я сначала говорю, потом думаю. Как и в этот раз
        На досуге попробую поправить код и выводы.


  1. ry7zen
    12.07.2017 10:13

    я знаю что когда раздаёшь, смотрят на тебя сначала как на и… та, потом и делают им, ударом по голове, а потом ты теряешь заработок как правило.


  1. PapaBubaDiop
    12.07.2017 10:40
    -2

    На основе этой байды можно построить детерминированную модель распределения, если вместо random использовать hash.

    И еще забава для гиков — разработать свой блок-чейн на основе N транзакций для описанной в статье задачи.