我有一个问题。 “到达结帐的随机顾客数量是每分钟5到10之间。” 我需要根据他们的到达时间顺序将这些客户放在列表中。
我不知道如何每分钟产生随机数的客户,也不知道如何假设他们的到达时间。
这适用于使用c ++代码和使用threadtest.c代码的Nachos服务器
答案 0 :(得分:1)
使用毒药分布。这将创建一个3600整数的向量,每个向量都有该秒内进入的客户数量。向量的索引是时间戳。
请记住,在任何给定的秒内,有时会有超过1个客户进入。如果是这样,每个客户将具有相同的时间戳。根据需要更改时间分辨率。您还可以只创建一个带有时间和customer_count的元组向量,并仅在一个给定的秒数内推送一个或多个客户的条目。那是你的任务。这是为了说明泊松分布。
#include <iostream>
#include <random>
#include <vector>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::poisson_distribution<> d(5/60.0); // set average for Poisson distribution for 5 per minute
std::vector<int> customers_at_each_second;
int total_customers = 0;
for (int i = 0; i < 3600; i++)
{
int customers_at_this_second = d(gen);
customers_at_each_second.push_back(customers_at_this_second);
total_customers += customers_at_this_second;
}
std::cout << "Total Customers in the hour " << total_customers << '\n';
}