Информация об изменениях

Сообщение Re[3]: Как максимально честно но случайно перераспределить д от 27.04.2015 11:09

Изменено 27.04.2015 11:21 Brice Tribbiani

Здравствуйте, C0x, Вы писали:

LVV>>Бегаем до тех пор, пока не раздадим все деньги.


C0x>Тут все-таки хотелось бы не за O(N*M) а все-таки за O(N), т.к. N значительно меньше, чем M.

C0x>N — кол-во чуваков, M кол-во денег суммарно.

Метод, предложенный Лаптевым, дает распределение Бернулли, которое в пределе стремится к нормальному.
То есть, аналогичное решение можно получить, сгенерировав N случайных чисел по нормальному(гауссовому) распределению, с центром M/N и произвольной сигмой.

На питоне это будет типа
import numpy as np
N=10 #number of players
M=100. #total money
s=1.0 #default standard deviation 
np.random.normal(M/N, s, N)


А если надо самому, то из десяти равномерно распределенных чисел(стандартный рэндом) 10 нормально-распределенных делаются вот этой формулой.
Re[3]: Как максимально честно но случайно перераспределить д
Здравствуйте, C0x, Вы писали:

LVV>>Бегаем до тех пор, пока не раздадим все деньги.


C0x>Тут все-таки хотелось бы не за O(N*M) а все-таки за O(N), т.к. N значительно меньше, чем M.

C0x>N — кол-во чуваков, M кол-во денег суммарно.

Метод, предложенный Лаптевым, дает распределение Бернулли, которое в пределе стремится к нормальному.
То есть, аналогичное решение можно получить, сгенерировав N случайных чисел по нормальному(гауссовому) распределению, с центром M/N и произвольной сигмой.

На питоне это будет типа
import numpy as np
N=10 #number of players
M=100. #total money
s=1.0 #default standard deviation 
np.random.normal(M/N, s, N)


А если надо самому, то из десяти равномерно распределенных чисел(стандартный рэндом) 10 нормально-распределенных делаются вот этой формулой.

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