Java 取兩個float之間隨機數

生成隨機數:

public static Float mockFloatBetween(Float begin, Float end) {
        return (float) Math.random() * (end - begin) + begin;
    }
//等同於
 public static Float mockFloatBetween1(Float begin, Float end) {
        double point = Math.random();
        float between = end - begin;
        double pointBetween = between * point;
        double result = pointBetween + begin;
        return (float) (result);
    }    

單元測試:

@Test
    public void mockFloatBetween() throws Exception {
        for (int i = 0; i < 100; i++) {
            Float aFloat = DataUtils.mockFloatBetween2(6.66f, 8.88f);
            TestCase.assertTrue(6.66f <= aFloat);
            TestCase.assertTrue(aFloat <= 8.88f);
        }
    }

debug:
在這裏插入圖片描述
嚴謹的改造後(保留2位小數):

    public static Float mockFloatBetween2(Float begin, Float end) {
        BigDecimal bigDecimal = new BigDecimal(end - begin);
        BigDecimal point = new BigDecimal(Math.random());
        BigDecimal pointBetween = point.multiply(bigDecimal);
        BigDecimal result = pointBetween.add(new BigDecimal(begin)).setScale(2, BigDecimal.ROUND_FLOOR);
        return result.floatValue();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章