【问题标题】:How to create random number every minute [closed]如何每分钟创建随机数[关闭]
【发布时间】:2020-01-10 07:51:15
【问题描述】:

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

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

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

【问题讨论】:

  • 所以你想生成一个5到10之间的随机数?整数?实数?
  • 是的,我知道如何生成范围内的随机数,但我不知道如何将时间设置为每分钟
  • 你想看看一个毒分布来做到这一点:en.cppreference.com/w/cpp/numeric/random/poisson_distribution
  • 如果这是一个模拟,你可能不关心真实世界的分钟数。做一个循环。每次迭代代表一分钟。每次迭代都会将 5-10 人添加到队列中。在这个循环中,您处理所有服务逻辑并删除那些已经服务的客户被删除..

标签: c++ nachos


【解决方案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';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 2023-02-06
    • 1970-01-01
    • 2020-11-01
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多