2017-04-23 61 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

你不如删除评论! –