Java 生成两个值之间的随机数

首先以float类型为例:

代码:

public float mockFloatBetween2(int begin, int end) {
    BigDecimal between = new BigDecimal(end - begin);
    BigDecimal point = new BigDecimal(Math.random());
    BigDecimal pointBetween = point.multiply(between);
    BigDecimal result = pointBetween.add(new BigDecimal(begin)).setScale(2, BigDecimal.ROUND_FLOOR);
    return result.floatValue();
}

步骤解释:

  1. 计算两个值之间的差值,difference
  2. 生成随机比例:point
  3. 将 随机比例 乘以 差值 得到 随机差值:pointBetween
  4. 最后将 较小值 加上 随机差值 或者将 较大值 减去 随机差值 获得随机数
  5. 进行小数点处理。

同理,我们也可以生成其它类型的随机数:

/**
 * @Description: 生成int随机数
 * @Author: wsp
 * @Date: 2021/9/24 17:56
 **/
public int mockIntBetween2(int begin, int end) {
    int between = end - begin;
    double random = Math.random();
    int randomBetween = new Double(random * between).intValue();
    int result = begin + randomBetween;
    return result;
}

/**
 * @Description: 生成long随机数
 * @Author: wsp
 * @Date: 2021/9/24 17:56
 **/
public long mockLongBetween2(long begin, long end) {
    long between = end - begin;
    double random = Math.random();
    long randomBetween = new Double(random * between).longValue();
    long result = begin + randomBetween;
    return result;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值