number/random.js

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

export default (lower, upper, floating = false) => {
    // 如果只提供一个参数,则将 upper 设为 lower,lower 设为 0
    if (upper === undefined) {
        upper = lower;
        lower = 0;
    }

    // 判断是否需要返回浮点数
    const isFloating = floating || (typeof lower === 'number' && lower % 1 !== 0) || (typeof upper === 'number' && upper % 1 !== 0);

    // 生成随机数
    const random = Math.random();
    const result = isFloating ? random * (upper - lower) + lower : Math.floor(random * (upper - lower + 1)) + lower;

    return result;
};