gpt4 book ai didi

c - rand() 在循环中给出相同的结果

转载 作者:行者123 更新时间:2023-11-30 16:46:10 25 4
gpt4 key购买 nike

我有一个随机函数,它根据某些间隔的可能性给出数字。

int myrand (float array[]){ //this function gives an interval according to 
// possibilities


float possib[part];
int i;
float r;
possib[0]=array[3];
for (i=1;i<part;i++)
possib[i]=possib[i-1]+array[i+3];
r=(float)rand()/32767;
printf(" r= %f ",r); //this is to check whether r is different in every run

for(i=0;i<part;i++){
if(r<possib[i]){
return i;
break;
}
}

}

double myrandfinal(float array[],int n){ //this function gives a random
double final; //double in the chosen interval
final=array[n]+(((float)rand()/32767)*(array[n]-array[n-1]));
printf("final= %f",final-array[n]); //again to check
return final;
}

float eval() {
float l;
float interval[]={3.25,4.00,4.75,5.50};
float flar[]={0.1,0.25,0.15,0.5};

l=myrandfinal(interval,myrand(flar));
return 3+l;

}

主要是我有如下内容:

int main(){
int i;
srand(time(NULL));
for(i=0;i<10;i++)
printf("%f",eval()); //the evaluate function
}

问题是,当我期待这样的输出时:

6.50
7.25
7.60
...

我收到如下输入:

6.50
6.50
6.50
...

虽然我在所有检查中得到不同的数字,但评估函数的结果是相同的。主要是我刚写的时候

printf("%f",eval());

没有循环并自己执行几次,我得到不同的结果。原因是什么?

抱歉我的错误,我是新用户,我正在努力适应它:)

最佳答案

由于我们没有看到所有相关代码,因此我们只能猜测。 (使用计算)rand() 产生常量值的两个原因:

  • 使用相同的参数重复调用 srand()
  • 整数运算,例如截断小数部分的除法或(例如)始终得出 0。

关于c - rand() 在循环中给出相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865727/

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