c - 浮点异常(核心已转储)。在创建者随机数中

标签 c random

我正在尝试创建一个程序来提供 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/

相关文章:

php - .php 随机图像在外部站点上作为 .jpg

swift - 需要关于随机函数swift的解释

c++ - 实现二进制搜索猜谜游戏

c++ - Linux中的UDP sendto是否会返回ENOBUFS?

c - 代码是否自上而下阅读

c - 如何使 Bresenham 算法反向工作?

c - 在 C 的控制台应用程序中需要一些教程链接邻接 TUI

c++ - 工作 "within"结构 C/C++

algorithm - 糟糕的随机数生成器

Java随机生成两位小数格式的价格