排队论——随机时间概率

排队论中在模拟时顾客到达时间,服务时间时,有两个结论:

1. 单位时间内平均到达的顾客数如果为 n ,那么到每两个顾客的达时间的时间间隔这个随机变量是服从参数为 1/n 的泊松分布;

2. 每个顾客平均需要的服务时间如果为 t,那么 t 应该服从 参数为 1/t 的指数分布。

泊松分布


lambda是单位时间内的平均数,是2.71828...(Euler's number)。

三种实现,首先第一种是一个产生随机柏松分布数的简单算法(伪随机数抽样),由Knuth提出。

第二种,有一些微小的差别。

第三种,

实现如下:

static double poisson(double lambda) {
    int x = 0;
    double p = exp(-lambda);
    double s = p;
    double u = std::rand() * 0.1 / RAND_MAX;
    while (u > s) {
        x++;
        p = p*lambda / x;
        s += p;
    }
    return x;
}

指数分布

时,;否则,

lambda是单位时间内的数目。

实现:

static double exponentail(double lambda) {
    return -log(1 - (std::rand() * 0.1 / RAND_MAX)) / lambda;
}
原文地址:https://www.cnblogs.com/clairvoyant/p/5817821.html