生成随机比率

问题描述

我正在看一本书,它有这个功能。我不明白使用 rand()/(RAND_MAX) 的用途是什么,它不只是产生一个随机比率 value?我们如何使用随机比率 value 来检查它是否大于指数?

#include <cmath>

bool isCustomerArrived(double arvTimeDiff)
{
    double value;

    value = static_cast<double> (rand()) / static_cast<double>(RAND_MAX);

    return (value > exp(- 1.0/arvTimeDiff));
}

我从书中得到的解释是

要运行模拟,我们需要知道在给定时间单位内到达的客户数量以及为客户提供服务所需的时间。我们使用统计学中的泊松分布,它表示在给定时间发生 y 个事件的概率由以下公式给出:here 其中 λ 是在那个时间发生 y 个事件的期望值。假设,在 平均每四分钟就有一个顾客到达。在这四分钟期间,客户可以在四分钟中的任何一分钟到达。假设四分钟中每一分钟的可能性相等,则客户在四分钟中每一分钟到达的预期值为 1/ 4 = 0.25。接下来,我们需要确定客户是否真的在给定的时间到达。 现在,P(0)= e^ (- λ) 是在给定时间没有事件发生的概率。 Poisson 分布的基本假设之一是在短时间内出现多个结果的概率可以忽略不计。为简单起见,我们假设在给定的时间单位只有一个客户到达。因此,我们使用 e^ (- λ) 作为截止点来确定客户是否在给定的时间单位到达。假设平均每四分钟就有一位顾客到达。那么,λ = 0.25。我们可以使用一种算法来生成一个介于 0 和 1 之间的数字。如果生成的数字的值大于 e^(-λ),我们可以假设客户在特定时间单位到达。例如,假设 rNum 是一个随机数,满足 0 ≤ rNum ≤ 1。如果 rNum 大于 e^ (- λ) ,客户在给定的时间单位到达。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)