我正在尝试创建一个程序来提供 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
当我运行它时,它给我这个错误:浮点异常(核心转储) 我可以找到错误。
最佳答案
getrand(0,0.3)
将 0.3 转换为 int
--> getrand(0,0)
--> rand ()%(0-0)
--> 除以 0。这通常被报告为“浮点异常”
取而代之的是 1.0*rand()/RAND_MAX * 0.3
还有其他数字问题会影响随机数生成的质量,但以上内容将处理 OP 的 FPE 和范围问题
关于c - 浮点异常(核心已转储)。在创建者随机数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571299/