Представьте, что запертые в одной комнате люди просто раздают друг другу деньги: каждый дает по доллару кому-то другому в случайном порядке. Как в итоге средства распределятся между этими людьми? Ответ может оказаться удивительным.
Задача: как распределяются деньги при случайной раздаче
Издание Decision Science News опубликовало материал с описанием необычного эксперимента:
«Представьте себе комнату, в которой одновременно находится 100 человек. У каждого из них есть по 100 долларов. Каждую секунду каждый из находящихся в комнате дает доллар одному случайно выбранному человеку. Как по прошествии некоторого времени распределятся деньги между всеми, кто есть в комнате?».
У большинства из тех, кто столкнулся с этой задачей, само собой возникло предположение, что в итоге все получат примерно поровну денег. Даже пять докторов наук, опрошенные Decision Science News, пришли к тому же первоначальному выводу. Но так ли это на самом деле?
Как выглядит распределение
То, как будут распределяться средства с течением времени, наглядно видно здесь.
Инфографика охватывает временной интервал в 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:
- Образовательные ресурсы ITinvest
- Аналитика и обзоры рынка
- Как определить наилучшее время для сделки на фондовом рынке: Алгоритмы следования тренду
- Как Big Data используют для анализа фондового рынка
- Поиск неэффективностей: Что нужно знать о создании стратегий для торговли на бирже
- Эксперимент: Использование Google Trends для прогнозирования обвалов фондового рынка
Комментарии (30)
AIxray
11.07.2017 15:57+3Вот каков алгоритм заложен у функции Рандомизации(помним да, что функция random так же работает по определённому алгоритму), таков и получится результат, но чисто по человечески, в одном из случаев, понимаем и допускаем, что в конечном счёте лишь у одного человека сосредоточатся практически вся сумма денег, а у остальных оставшаяся — незначительная сумма.
alexeykuzmin0
11.07.2017 16:07Не такое уж и большое неравенство возникает: в моем тесте (100 человек, 10 млн+ эпох) медиана стабильно получается от 50 до 100% от изначальной суммы денег, в среднем, около двух третей.
kokorins
11.07.2017 16:25В этом посте не хватает ссылки на какое-нибудь описание распределения порядковых статистик. Вообще вопрос довольно криво поставлен, все-таки интуиция говорит, что распределения количества денег у двух любой людей комнате должно быть одинаковое, а вот форму самого распределения из данного описания задачи очень сложно представить.
sashagil
12.07.2017 01:14Попробую восполнить недостатки заметки — я читал про этот эксперимент исходную заметку на английском (плюс кое-что по ссылкам в обсуждении).
1. Распределение богатства, которое устанавливается после достаточно большого количества итераций (и независимо от начального распределения) — распределение Гиббса, и этот факт выводится тем же способом, как в термодинамике. Краткое пояснение на английском этого вывода приводится в разделе 2 вот этой статьи (ну, там пересказ термодинамического вывода, варианты которого есть в википедии и много где ещё на русском). Я идею вывода поверхностно понимаю, но не уверен, что хорошо перескажу в коротком комментарии, так что решил не пересказывать. Форма распределения — обрезанный и нормированный в соответствии с постановкой эксперимента график экспоненты.
2. Конечно, среднее количество денег у каждого участника — одно и то же, 100 долларов в исходной постановке с 100 участниками. Распределение же показывает, какую долю времени в среднем он проводит с такой-то суммой в кармане — более часто с меньшей, менее часто с большей. При этом, фиксированный шаг по абсциссе (деньги) даёт уменьшение среднего времени пребывания в этом состоянии (значение ординаты) в фиксированное количество раз — экспонента!
sashagil
12.07.2017 01:30Да, ещё один момент — по-моему, в теорвере соответсвующее распределение вероятностей называется геометрическим: рассматривая его как дискретное (а не непрерывное, как в термодинамике), мы видим геометрическую прогрессию.
alexyr
11.07.2017 16:43+1Откуда взялось 9901 в конце, если всего денег в эксперименте 45*45=2025?
QDeathNick
11.07.2017 16:55Тут два разных эксперимента смешались. В визуализации 45 по 45, а в начале в тексте 100 по 100.
При 100 по 100, деньги могут в какой-то момент распределится так, что у 99 человек по рублю, а у одного всё остальное, 9901. Мне кажется вероятность такого состояния меньше, чем у состояния, когда вообще все деньги у одного. Но что-то ресурсы мозга на сегодня закончились.
Поэтому необходимо следить за распределением финансов.
По-моему либо это математический призыв к революции, либо попытка оправдать запрет криптовалют :)zeroWiNNeR
12.07.2017 10:13Напротив, их благосостояние всё время меняется: каждый человек со временем то богатеет, то беднеет.
Mishootk
11.07.2017 17:08+1Визуализируйте более насущную ситуацию. Абсолютно по теме обсуждаемой задачи.
Коллектив в котором традиционно на день рождения все скидываются имениннику складывая в конверт фиксированную сумму от каждого. В идеальных условиях за год каждый человек сколько скинулся, столько и получил на свой праздник от других. В реальности фактором случайности выступают болезни, отпуска, командировки, отгулы, текучка кадров. Давайте исключим такой глобально подбивающий фактор, как отсуствие на празднике именинника (пусть он празднует позже, но каждый год подарок в конверте получает). Но все равно волею случая одним скидываются больше, другим меньше. Чувствую что не везет рожденным в сезон отпусков (глобально), сезонных эпидемий и командировок (если у фирмы периодические выезды привязанные к определенным датам ежегодно).QDeathNick
11.07.2017 17:34Я могу точно заявить, не везёт тем, кто работает без отпусков и увольнений, т.е. системным администраторам, главным бухгалтерам и директорам. В моей практике эти должности с самой маленькой текучкой.
Ну и наплевать на эти копейки, в течении года, зато в ДР очень кстати лишние деньги получить на кормление этих утекающих.
Areso
12.07.2017 13:28Как бы поступил настоящей скряга: он бы положил деньги на депозит, в конце года у него бы остались проценты, а тело депозита он бы раздал обратно.
alexeykuzmin0
12.07.2017 14:11+2Превысит ли прибыль транзакционные расходы? К тому же, если ставка по депозиту ниже ставки дисконтирования для конкретного агента, становится выгоднее сегодня потратить, а потом заново собрать
andersong
12.07.2017 13:51Мне не везёт. Не помню случая, чтобы мне на ДР дарили конверт, хотя я исправно всем вкладываюсь.
sutarmin
11.07.2017 17:08+5Такая длинная гифка — это очень неудобно. Ни перемотать ни ускорить. Не делайте так, пожалуйста :)
lash05
11.07.2017 20:51-1Модель не имеют отношения к реальному распределению денег, ибо богатый гораздо легче получит денег с бедного, чем наоборот.
burdakovd
11.07.2017 22:54+1> Таким образом, в долгосрочной перспективе все варианты распределения денег одинаково вероятны.
Тяжело в это поверить.
Например такой вариант: [10000, 0, 0, 0, ..., 0] имеет нулевую вероятность, потому что в него прийти невозможно ни из какого состояния.
Такой [9999, 1, 0, 0, ..., 0] возможен, но в него можно прийти только из одного конкретного состояния только одним способом, поэтому я всё же думаю его вероятность меньше чем других распределений.QDeathNick
12.07.2017 12:25Например такой вариант: [10000, 0, 0, 0, ..., 0] имеет нулевую вероятность, потому что в него прийти невозможно ни из какого состояния.
Не написано, что себе нельзя передавать, поэтому состояние возможно.
NoRegrets
11.07.2017 23:20+1Я все понял, что бы стать богатым, нужно меньше отдавать и больше получать. КО. )
sotnikdv
12.07.2017 04:22Дык классика же теорвера, что если случайным образом распределять что-то, то распределится не идеально равномерно.
Вот и статья тут была подобная https://habrahabr.ru/post/163621/knagaev
14.07.2017 15:39Я тоже сразу вспомнил про ту статью и хотел написать комментарий, но решил сначала просмотреть все комментарии, что кто-нибудь должен почувствовать ассоциацию.
И не ошибся, что приятно :)
И та статья намного интереснее.
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]
alexeykuzmin0
12.07.2017 12:12А почему с нормальным? Выше про Гиббса писали
klaim
12.07.2017 12:47+1Потому что иногда я сначала говорю, потом думаю. Как и в этот раз
На досуге попробую поправить код и выводы.
ry7zen
12.07.2017 10:13я знаю что когда раздаёшь, смотрят на тебя сначала как на и… та, потом и делают им, ударом по голове, а потом ты теряешь заработок как правило.
PapaBubaDiop
12.07.2017 10:40-2На основе этой байды можно построить детерминированную модель распределения, если вместо random использовать hash.
И еще забава для гиков — разработать свой блок-чейн на основе N транзакций для описанной в статье задачи.
alexxxst
Не та картинка.