在Java中生成一定范围的随机双数

前端之家收集整理的这篇文章主要介绍了在Java中生成一定范围的随机双数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看过的帖子几乎解释了这个问题,但他们都使用整数值,我老实说,不完全明白,所以这个问题:

我正试图在java生成范围(-1554900.101)到(52952058699.3098)的随机数字,我想知道是否有人可以向我解释这一点,因为我真的想了解它.

我的想法:
这将是一个正确的方法吗?
1)在指定范围内生成一个随机整数
2)将生成的数字除以pi,得到浮点数/双随机结果

提前致谢.

解决方法

这是这个想法.您想要一个范围内的随机数,我们假设[-1.1,2.2]从一个简单的例子开始.该范围的长度为3.3,因为2.2 – (-1.1)= 3.3.现在大多数“随机函数返回一个范围[0,1]的数字,其长度为1,所以我们必须将我们的随机数扩展到我们所需的范围内.
Random random = new Random();
double rand = random.nextDouble();
double scaled = rand * 3.3;

现在我们的随机数具有我们想要的大小,但是我们必须将其在数字行上移动到我们想要的确切值之间.对于这一步,我们只需要将整个范围的下限添加到我们的缩放随机数中即可完成!

double shifted = scaled + (-1.1);

所以现在我们可以把这些零件放在一起:

protected static Random random = new Random();
public static double randomInRange(double min,double max) {
  double range = max - min;
  double scaled = random.nextDouble() * range;
  double shifted = scaled + min;
  return shifted; // == (rand.nextDouble() * (max-min)) + min;
}

当然,这个功能需要一些错误检查,像NaN这样的意外的值,但这个答案应该说明一般的想法.

原文链接:https://www.f2er.com/java/122895.html

猜你在找的Java相关文章