我有一個隨機函數,根據某些區間的可能性給出數字。rand()在循環中給出相同的結果
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
}
的問題是,當我期待的oputput像:
6.50
7.25
7.60
...
我得到的輸入,如:
6.50
6.50
6.50
...
雖然我ge在所有檢查中不同的數字,評估函數的結果是相同的。在主當我剛寫
printf("%f",eval());
未經環和執行自己的幾次,我得到不同的結果。這是什麼原因?
對不起,我的錯誤,我是新用戶,我試圖去適應它:)
'eval()'定義在哪裏? – Marievi
@Marievi它被定義爲'myrand()'和'myrandfinal()',因爲它太長和複雜,我沒有寫它。它對這個問題有不相干的部分。 – NoWay
'eval'是你問我們的功能,所以我認爲它是完全相關的。請向我們展示一個[最小,完整和可驗證的示例](https:// stackoverflow。com/help/mcve),包括你得到的輸出(以及你期望的結果)。 –