number/random.js

import yd_is_float from '../is/float.js';
/**
 * 获取2个数之间的随机数
 * @alias yd_number_random
 * @category number
 * @param {number} lower 最小值
 * @param {number} upper 最大值
 * @param {boolean} isFloat 是否浮点数
 * @returns {number} 随机数
 * @author 楠木 <157884200@qq.com> <https://github.com/nanmu-self>
 * @author 陈随易 <https://chensuiyi.me>
 * @summary 产生一个包括 lower 与 upper 之间的数。
 * 如果只提供一个参数返回一个0到提供数之间的数。
 * 如果 isFloat 设为 true,或者 lower 或 upper 是浮点数,结果返回浮点数。
 */

export default (lower, upper) => {
    // TODO: 后续判断是否是2个数字
    // 只要任意一个参数是浮点数,则返回浮点数
    const isFloat = yd_is_float(lower) || yd_is_float(upper);

    if (isFloat) {
        return Math.random() * (upper - lower) + lower;
    } else {
        return Math.floor(Math.random() * (upper - lower + 1)) + lower;
    }
};