gpt4 book ai didi

c++ - 如何确保由 rand 生成的介于 0 和 1 之间的随机数不为 0?

转载 作者:太空狗 更新时间:2023-10-29 19:56:04 26 4
gpt4 key购买 nike

我正在模拟排队模型,我需要使用此算法生成我的到达。但是,我有时会得到 0.000000 作为随机值 R1,并且无法计算 ln(0) 因此进程停止。我怎样才能避免得到 0?

我考虑过将 0.0000001 添加到每个,但这不是很糟糕吗,因为我可能会得到大于 1 的值?

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>

main()
{
int a=3, b=4, T=500, I=0, l=1504;
srand(time(NULL));
float R1, R2, t=0, S[10000], f;

printf("Utilizaremos la funcion at+b para el simular el poceso\n");
while(t<T){
R1=rand()/(double)RAND_MAX;
t= t-log(R1)/l;
R2=rand()/(double)RAND_MAX;
f = a*t+b;
if(R2<f/l){
I=I+1;
S[I]=t;
printf(" \n I %d, R1 %f, R2 %f, t %f, S[i] %f", I,R1,R2,t,S[I]);
}


}
getche();
return 0;
}

最佳答案

随便取一个随机数,直到取不到0

double myrand()
{
while(1)
{
double r = rand()/(double)RAND_MAX;
if (r != 0)
return r;
}
}

...

R1 = myrand(); // Will not be 0

关于c++ - 如何确保由 rand 生成的介于 0 和 1 之间的随机数不为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56084027/

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