2017-04-23 60 views
0

我正在試圖創建一個程序,以給出在0到0,3範圍內的隨機數。並由用戶授予種子。我的代碼是:浮點異常(核心轉儲)。創建者隨機數

#include <stdio.h> 
#include <stdlib.h> 
int getrand(int min,int max); 
int main() 
{ 
unsigned seed; 

int p=0, i=0; 
float min,max; 
printf("Input a random number seed: "); 
scanf("%u",&seed); 
srand(seed); 

    for(i=0;i<getrand(0,0.3); i++) p=getrand(min,max); 

printf("Random value : %d \n",p); 


return(0); 
} 
int getrand(int min,int max){ 
    return(rand()%(max-min)+min); 
} 

and 

當我運行它,它給我這個錯誤:浮點異常(核心轉儲) 我能發現的錯誤。

+2

「getrand」函數的定義指定了兩個整數r論據。 '0.3'不是沒有整數。我有點驚訝,導致了核心轉儲,但我仍然會修復它。 –

+1

與另一個電話同上 - 在這種情況下('getrand(min,max)'),你傳遞了兩個浮點數。也許編譯與所有的警告 –

+1

什麼是「我可以發現錯誤」應該是什麼意思?你找不到錯誤?假設如此,您可以將其重寫爲「我找不到錯誤」。我會爲你編輯,但我不確定你的意思,也不想誤解。另一種可能是你可以找到更多的錯誤,例如:「我發現錯誤」。 –

回答

2

getrand(0,0.3)轉換0.3至int - >getrand(0,0) - >rand()%(0-0) - >除以0。這是經常報道的 「浮點異常」

相反1.0*rand()/RAND_MAX * 0.3


有其他數字問題會影響隨機數字的質量,但上述內容將處理OP的FPE和範圍問題

+0

你不如刪除評論! –