如何每分钟创建一个随机数

时间:2019-09-08 02:58:34

标签: c++ nachos

我有一个问题。 “到达结帐的随机顾客数量是每分钟5到10之间。”  我需要根据他们的到达时间顺序将这些客户放在列表中。

我不知道如何每分钟产生随机数的客户,也不知道如何假设他们的到达时间。

这适用于使用c ++代码和使用threadtest.c代码的Nachos服务器

1 个答案:

答案 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';
}