生成包含在指定值区间内的随机浮点值的最佳方法是什么?

新手上路,请多包涵

我想在 Java 中生成一个随机浮点值。该值必须在特定的可能值范围内。

例如,我必须生成一个在以下范围内的随机值:

 MIN: 41,815080
MAX: 41,829191

这些值恰好代表地图上可能的经度范围,但这个问题更普遍。

什么是聪明的方法呢?

原文由 AndreaNobili 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 587
1 个回答

对于范围内的随机值,公式为:

 double random = min + Math.random() * (max - min);

无论您使用什么来生成随机数,这个基本公式都是不变的。

Math.random() 提供分布适中的数字,但您可以用您想要的任何随机数生成器替换它,例如(稍微好一点):

 Random r = new Random();
double random = min + r.nextDouble() * (max - min);

或者如果你真的想要一个 float

 float random = min + r.nextFloat() * (max - min);

为了更好的质量(以速度为代价)随机数生成使用

Random random = new SecureRandom();

或者您可以使用更奇特的 3rd 方库,例如:

 import org.apache.commons.math3.random.RandomDataGenerator;

RandomData random = new RandomDataGenerator();

其中使用了优越的 Well19937c 算法。

原文由 Bohemian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题