[Объяснение распределения Пуассона, которое может помочь вам лучше понять]
Значение «распределения Пуассона» и функции «std::poisson_distribution()» тесно связаны, но не совпадают.
Распределение Пуассона — это дискретное распределение вероятностей. Вы можете рассчитать вероятности, такие как вероятность того, что пакет не придет в следующий период (например, одна секунда) равен 0,002, один пакет равен 0,075, два пакета равен 0,15, три пакета равен 0,20 и т. д., когда среднее время прибытия равно 4. (значения вероятности, которые я использовал, являются образцами (не реальными значениями)) Сумма вероятностей того, что от 0 пакетов до бесконечных пакетов всегда становится 1,0.
std::poisson_distribution() возвращает количество пакетов за каждый период, среднее значение которых для длительных периодов равно среднему (4,1 в вашем коде), а их распределение является распределением Пуассона.
Вы можете рассчитать это, выполнив следующие шаги.
Составьте таблицу number_of_packet и вероятности.
Создайте случайное число от 0 до 1.
Суммируйте вероятности в таблице, пока сумма не станет больше случайного числа.
(количество вероятностей, используемых для суммирования)-2 - это значение.
Пример: если вы получаете 0,3 как случайное число.
Сумма вероятностей отсутствия пакета к двум пакетам составляет 0,002 + 0,075 + 0,15 = 0,227 меньше 0,3.
Сумма вероятностей отсутствия пакета к трем пакетам составляет 0,002 + 0,075 + 0,15 + 0,20 = 0,427 больше 0,3.
Затем для следующего значения используются «два пакета».
Это иллюстрация того, что произошло в std::poisson_distribution().
[Прямой ответ на ваш вопрос: Как сделать приход пакетов в распределении Пуассона]
Я предполагаю, что период равен одной секунде для простоты понимания.
выходы: 2 3 1 4 3 4 4 3 2 3 вы получили количество пакетов за каждую секунду, два пакета за первую секунду, три пакета за 2-ю секунду, один пакет за 3-ю секунду и так далее.
Вы можете делать прибытия, размещая пакеты равномерно в эту секунду.
[Пример для выходов: 2 3 1]
Время 0с - 1с
Приходит два пакета. Разделите 1 секунду на 2 (два периода по 0,5 с) и поместите пакеты посередине. => 1-й пакет размещается на 0,25 с, а 2-й на 0,75 с.
Время 1с - 2с
Туда приходят пакеты. Разделите 1 секунду на 3 и поместите пакеты посередине. => 1-й пакет размещается на 1,166 с, 2-й на 1,5 с, 3-й на 1,833.
...и так далее.
0,25, 0,75, 1,166, 1,5, 1,833 - это время прибытия первых пяти пакетов, которые исходят из полученных вами «выходов: 2 3».
===== Размер пакета - еще одна проблема.
Вы должны определить, какое распределение используется для размера пакета.
Я не думаю, что распределение Пуассона подходит для размера пакета.
person
Fumu 7
schedule
30.01.2015