Алгоритм распределения Пуассона для заказов товаров? Здравствуйте. В тестовом задании столкнулся с требованием реализовать поступление заказов с помощью распределения Пуассона. К сожалению, раньше с этим не сталкивался, никак не могу понять, как это распределение применить? Нашел библиотеку MathPHP Там есть такая функция:// Poisson distribution $λ = 2; // average number of successful events per interval $k = 3; // events in the interval $poisson = new Discrete\Poisson($λ); $pmf = $poisson->pmf($k); $cdf = $poisson->cdf($k); Сама задача:Заказы поступают случайным образом с интервалом 1-30 мин и имеют распределение Пуассона. Заказ имеет следующие свойства: 1. номер заказа; 2. время поступления (начинается с 0); 3. время готовки (10-30 мин); .... Сгенерировать N заказов согласно свойствам. (N=10...100);
Для реализации поступления заказов с помощью распределения Пуассона с учетом указанных свойств, вы можете использовать следующий алгоритм:
Задайте параметр λ (среднее количество заказов за определенный интервал времени, например, за диапазон от 1 до 30 минут).Создайте экземпляр класса Poisson из библиотеки MathPHP с указанным параметром λ.Для каждого заказа от 1 до N: a. Сгенерируйте случайное время поступления заказа в интервале от 0 до 30 минут. b. Сгенерируйте случайное время готовки заказа в интервале от 10 до 30 минут. c. Сгенерируйте номер заказа. d. Рассчитайте время выполнения заказа как сумму времени поступления и времени готовки. e. Сохраните номер заказа, время поступления, время готовки и время выполнения.
Пример кода для генерации N заказов с использованием распределения Пуассона:
use MathPHP\Probability\Distribution\Discrete\Poisson; lambda=2;//среднееколичествозаказовзаинтервалвремениlambda = 2; // среднее количество заказов за интервал времени lambda=2;//среднееколичествозаказовзаинтервалвремениpoisson = new Poisson(lambda);lambda); lambda);N = 100; // количество заказов for (i=1;i = 1; i=1;i <= N;N; N;i++) { timearrival=mtrand(0,30);//случайноевремяпоступлениязаказаtime_arrival = mt_rand(0, 30); // случайное время поступления заказа timearrival=mtrand(0,30);//случайноевремяпоступлениязаказаcook_time = mt_rand(10, 30); // случайное время готовки заказа ordernumber=order_number = ordernumber=i; // номер заказа completiontime=completion_time = completiontime=time_arrival + cooktime;//времявыполнениязаказа//сохранитеинформациюозаказе,например,вмассивилиБДecho"Ordercook_time; // время выполнения заказа // сохраните информацию о заказе, например, в массив или БД echo "Order cooktime;//времявыполнениязаказа//сохранитеинформациюозаказе,например,вмассивилиБДecho"Orderorder_number - Time of Arrival: timearrivalmin,CookingTime:time_arrival min, Cooking Time: timearrivalmin,CookingTime:cook_time min, Completion Time: $completion_time min\n"; }
Этот код поможет вам создать N заказов с учетом указанных свойств и распределения Пуассона. Не забудьте подключить библиотеку MathPHP и настроить окружение для ее использования.
Для реализации поступления заказов с помощью распределения Пуассона с учетом указанных свойств, вы можете использовать следующий алгоритм:
Задайте параметр λ (среднее количество заказов за определенный интервал времени, например, за диапазон от 1 до 30 минут).Создайте экземпляр класса Poisson из библиотеки MathPHP с указанным параметром λ.Для каждого заказа от 1 до N:a. Сгенерируйте случайное время поступления заказа в интервале от 0 до 30 минут.
b. Сгенерируйте случайное время готовки заказа в интервале от 10 до 30 минут.
c. Сгенерируйте номер заказа.
d. Рассчитайте время выполнения заказа как сумму времени поступления и времени готовки.
e. Сохраните номер заказа, время поступления, время готовки и время выполнения.
Пример кода для генерации N заказов с использованием распределения Пуассона:
use MathPHP\Probability\Distribution\Discrete\Poisson;lambda=2;//среднееколичествозаказовзаинтервалвремениlambda = 2; // среднее количество заказов за интервал времени
lambda=2;//среднееколичествозаказовзаинтервалвремениpoisson = new Poisson(lambda);lambda);
lambda);N = 100; // количество заказов
for (i=1;i = 1; i=1;i <= N;N; N;i++) {
timearrival=mtrand(0,30);//случайноевремяпоступлениязаказаtime_arrival = mt_rand(0, 30); // случайное время поступления заказа
timea rrival=mtr and(0,30);//случайноевремяпоступлениязаказаcook_time = mt_rand(10, 30); // случайное время готовки заказа
ordernumber=order_number = ordern umber=i; // номер заказа
completiontime=completion_time = completiont ime=time_arrival + cooktime;//времявыполнениязаказа//сохранитеинформациюозаказе,например,вмассивилиБДecho"Ordercook_time; // время выполнения заказа
// сохраните информацию о заказе, например, в массив или БД
echo "Order cookt ime;//времявыполнениязаказа//сохранитеинформациюозаказе,например,вмассивилиБДecho"Orderorder_number - Time of Arrival: timearrivalmin,CookingTime:time_arrival min, Cooking Time: timea rrivalmin,CookingTime:cook_time min, Completion Time: $completion_time min\n";
}
Этот код поможет вам создать N заказов с учетом указанных свойств и распределения Пуассона. Не забудьте подключить библиотеку MathPHP и настроить окружение для ее использования.