gpt4 book ai didi

c++ - 指数生成器有时会给出 "weird"结果

转载 作者:行者123 更新时间:2023-11-28 00:40:01 26 4
gpt4 key购买 nike

我正在用 C++ 构建一个模拟,我有一个指数生成器来生成进程的突发时间。

通常它会返回这样的值:3.14707,1.04998。但经常有 1/10 的情况出现这样的数字:2.64823e-307

这是生成器的代码(我在程序开头使用了srand ( time(NULL) );):

double exponential(float u)
{
double x,mean;
mean = 10;
// generate a U(0,1) random variate
x = rand();
u = x / RAND_MAX;
return (-mean * log(u));
}

这就是我分配值的方式。里面的 while 部分是我试图摆脱这些值的努力,但没有奏效:

for (int i = 0; i < nPages; i++)
{
index[i] = i;
arrival[i]= poisson(r);
burst[i]=exponential(u);
while (burst[i]<1 || burst[i]>150)
{
cout<<"P"<<i<<endl;
burst[i]=(burst[i-1]+burst[i+1])/2;
}
}

最佳答案

为什么使用 C 库而不是 C++ 库??

std::random_device rd;
std::default_random_engine gen(rd());
std::exponential_distribution<double> dist(lambda);

double x = dist(gen);

关于c++ - 指数生成器有时会给出 "weird"结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335449/

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