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

标签 c random

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

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/

相关文章:

python - 复制项目并根据机会将其添加到列表中

C - 带有可选 int 的 scanf 字符串

c - 修改指向整数数组的双指针

c - malloc.c 3096 有什么问题

C++ 随机数生成器,不是随机的,但总是返回相同的数字

java - java中生成随机数

javascript - 使用 javascript 或 jquery 的随机单词弹出脚本

c - C中整数指针数组的静态初始化错误

c - 从套接字读取然后分割输入字符串在 C 中的行为不正常

java - Java中的随机数