gpt4 book ai didi

c++ - C++中的泊松到达代码给出相同的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:54 25 4
gpt4 key购买 nike

您好,我正在尝试模拟一些作业调度算法,并且正在尝试为请求创建泊松到达函数。我在维基百科上找到了泊松到达算法,我实现并运行了它,但我一直得到相同的结果(例如 l=15 -> 返回 14,l=1/15 返回 0)

#include <cmath>
#include <iostream>
#include <cstdlib>
using namespace std;
main (){
for (int i=0;i<1000;i++)
{

float l=25;
float L=exp(-l);
float k=0;
float p=1;
//begin while
do{
k=k+1;
// Generate a random number between 0 and 1
// return a uniform number in [0,1].
double u = rand() / (double)RAND_MAX;
p=p*u;
} while (p>L);
return k-1;
}}

这是我用来创建这个的算法

algorithm poisson random number (Knuth):
init:
Let L ← e−λ, k ← 0 and p ← 1.
do:
k ← k + 1.
Generate uniform random number u in [0,1] and let p ← p × u.
while p > L.
return k − 1.

提前致谢

最佳答案

你的问题有点不清楚,但我认为你的问题是你每次运行程序时都期望不同的随机数。请注意,每次运行程序时,rand() 都会生成相同的随机数序列,除非您为其提供某种种子值。

执行此操作的标准方法是使用当前时间作为随机数生成器的种子,如下所示。

#include <iostream>
#include <ctime>
#include <cstdlib>

int main() {
srand(time(NULL));
std::cout << rand();

return 0;
}

每次都会产生不同的随机序列。如果您要删除 srand(time(NULL)) 行,则每次运行该程序时都会得到相同的结果。

您只需在程序开始时调用 srand(time(NULL)) 一次。

编辑:我也将编辑我的帖子以提及在 C++11 中有一个专用的“随机” header ,我还没有使用过它所以我不能对它发表太多评论,但是你可以在这里阅读它

http://www.cplusplus.com/reference/random/

关于c++ - C++中的泊松到达代码给出相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17745960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com