在Java中生成一定范围的随机双数
发布时间:2020-12-14 05:18:28 所属栏目:Java 来源:网络整理
导读:我看过的帖子几乎解释了这个问题,但他们都使用整数值,我老实说,不完全明白,所以这个问题: 我正试图在java中生成范围(-1554900.101)到(52952058699.3098)的随机数字,我想知道是否有人可以向我解释这一点,因为我真的想了解它. 我的想法: 这将是一个正确的方
我看过的帖子几乎解释了这个问题,但他们都使用整数值,我老实说,不完全明白,所以这个问题:
我正试图在java中生成范围(-1554900.101)到(52952058699.3098)的随机数字,我想知道是否有人可以向我解释这一点,因为我真的想了解它. 我的想法: 提前致谢. 解决方法
这是这个想法.您想要一个范围内的随机数,我们假设[-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这样的意外的值,但这个答案应该说明一般的想法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |