• 自己也模仿这做了一个可以返回一条或者多条的随机数据 [底部使用方法]


    /* 
    getMathBoolean : 随机布尔值
    getMathNumber : 返回一个随机数 [返回一个默认0-1000的随机整数]
    getMathColor : 返回16进制随机颜色值
    getMathDate : 返回随机日期
    getMathName : 随机名字
    getMathChara : 返回单个文字 
    getMathOneChara : 返回一句话
    getMathChin : 返回随机多句话
     */
    /* 
    返回对象多条数据
    arr : 数据格式
    num : 数据条数
    */
    function setMathData(arr, num) {
        let new_arr = arr ?? null;
        let new_num = num ?? 1;
        if (new_arr != null) {
            let arr_list = [];
            for (let i = 0; i < new_num; i++) { // 需求的长度
                let keys_list = Object.keys(new_arr);
                let value_list = Object.values(new_arr);
                let return_new_arr = {}
                for (let j = 0; j < keys_list.length; j++) {
                    return_new_arr[keys_list[j]] = eval(value_list[j])
                }
                arr_list.push(return_new_arr)
            }
            return arr_list;
        }
    }
    
    /* -------------------------------------------------返回布尔值--------------------------------------------------------------------- */
    // 返回布尔值 
    function getMathBoolean(value) { // Number 返回true的概率  1-10 对应 10% - 100% 
        let Number = value ?? 5; // 默认值 true和false 出现的概率是相同的.
        if (Number) {
            let random = Math.floor(Math.random() * 10);
            if (random < Number || random == Number) {
                return true
            } else {
                return false
            }
        } else {
            return null;
        }
    }
    /* -------------------------------------------------返回随机数值--------------------------------------------------------------------- */
    /*
    min 最小值 
    max 最大值 
    decimal 小数位数 不传则返回整数 ;
    minus  负数出现的概率 1-10 对应 10%-100% , 不传则返回正数
    */
    // 返回随机整数或含有小数的数字
    function getMathNumber(min, max, decimal, minusProbability) {
        max = max ??  1000;
        min = min ?? 0;
        decimal = decimal ?? null; // 默认位整数
        let minus = minusProbability ?? null; //默认是正整数
        let value = ""
        if (decimal) { // 返回含有小数
            value = (Math.random() * (max - min) + min).toFixed(decimal);
        } else { // 返回整数
            value = Math.floor(Math.random() * (max - min) + min);
        }
        if (minus) {
            if (Math.floor(Math.random() * 10) < minus) { // 负数的概率 
                return "-" + value;
            } else {
                return value;
            }
        } else {
            return value;
        }
    }
    /* -------------------------------------------------返回随机颜色值--------------------------------------------------------------------- */
    // 通过需求返回需要的类型(颜色值)。二次封装 type可以选择的值有 rgb rgba hsl
    function getMathColor(type) { // 默认16进制的
        if (type) {
            if (type == "rgb") { // rgb格式的
                return getRandomRgb();
            }
            if (type == "rgba") { //rgba格式的
                return getRandomRgba();
            }
            if (type == "hsl") { // hsl格式的
                return getRandomHsl();
            }
        } else { // 16进制的颜色值 
            return getRandomColor();
        }
    }
    /* 返回16进制的随机颜色 */
    function getRandomColor() {
        let colorList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"]
        let color = "#"
        for (i = 0; i < 6; i++) {
            color = color + colorList[Math.floor(Math.random() * colorList.length)]
        }
        return color;
    }
    //  返回RGB格式的随机颜色
    function getRandomRgb() {
        let rgb = "rbg(";
        for (let i = 0; i < 3; i++) {
            if (i == 2) {
                rgb = rgb + Math.floor(Math.random() * 255) + ")";
            } else {
                rgb = rgb + Math.floor(Math.random() * 255) + ",";
            }
        }
        return rgb;
    }
    //  返回RGB格式的随机颜色
    function getRandomRgba() {
        let rgba = "rbga(";
        for (let i = 0; i < 3; i++) {
            if (i == 2) {
                rgba = rgba + Math.floor(Math.random() * 255) + ")";
            } else {
                rgba = rgba + Math.floor(Math.random() * 255) + ",";
            }
        }
        return rgba;
    }
    // hsl格式的随机颜色 
    function getRandomHsl() {
        let hsl = "";
        let hue = Math.floor(Math.random() * 360); //色相
        let saturation = Math.floor(Math.random() * 100) + "%"; // 饱和度
        let lightness = Math.floor(Math.random() * 100) + "%"; // 亮度
        hsl = `${hsl}(${hue},${saturation},${lightness})`;
        return hsl;
    }
    
    /* -------------------------------------------------日期/时间--------------------------------------------------------------------- */
    /* 
    完整格式展示 :  "YYYY-MM-DD HH:SS:MM" 
    type : 返回的格式 
    dateSeparator : 日期分隔符
    timeSeparator : 时间分隔符
    isCurrent : 是否是当前时间 //默认获取随机当前时间
    */
    
    function getMathDate(type, dateSeparator, timeSeparator, isCurrent) { // 缺少正则判断 
        let getType = type ?? "YYYY-MM-DD HH:SS:MM";
        let getD = dateSeparator ?? "-";
        let getT = timeSeparator ?? ":";
        let current = isCurrent ?? true;
        let date = new Date();
        let currentTime = { // 当前时间
            Y: date.getFullYear(),
            M: dateReplenish(date.getMonth() + 1),
            D: dateReplenish(date.getDate()),
            h: dateReplenish(date.getHours()),
            s: dateReplenish(date.getMinutes()),
            m: dateReplenish(date.getSeconds())
        }
        let randomTime = {
            Y: getMathNumber(1970, date.getFullYear()),
            M: getMathNumber(0, 12),
            D: getMathNumber(1, 31),
            h: dateReplenish(getMathNumber(0, 24)),
            s: dateReplenish(getMathNumber(0, 59)),
            m: dateReplenish(getMathNumber(0, 59))
        }
        let {
            Y,
            M,
            D,
            h,
            s,
            m
        } = current ? randomTime : currentTime
        if (getType == "YYYY-MM-DD") {
            return `${Y}${getD}${M}${getD}${D}`;
        }
        if (getType == "HH:SS:MM") {
            return `${h}${getT}${s}${getT}${m}`
        }
        if (getType == "YYYY-MM-DD HH:SS:MM") {
            return `${Y}${getD}${M}${getD}${D} ${h}${getT}${s}${getT}${m}`
        }
    }
    
    function dateReplenish(value) { // 日期小于两位数补充0;
        if (value < 10) {
            return "0" + value
        } else {
            return value
        }
    }
    /* 返回随机名字 */
    function getMathName() {
        let nameList =
            "赵|钱|孙|李|周|吴|郑|王|冯|陈|楮|卫|蒋|沈|韩|杨|朱|秦|尤|许|何|吕|施|张|孔|曹|严|华|金|魏|陶|姜|戚|谢|邹|喻|柏|水|窦|章|云|苏|潘|葛|奚|范|彭|郎|鲁|韦|昌|马|苗|凤|花|方|俞|任|袁|柳|酆|鲍|史|唐|费|廉|岑|薛|雷|贺|倪|汤|滕|殷|罗|毕|郝|邬|安|常|乐|于|时|傅|皮|卞|齐|康|伍|余|元|卜|顾|孟|平|黄|和|穆|萧|尹|姚|邵|湛|汪|祁|毛|禹|狄|米|贝|明|臧|计|伏|成|戴|谈|宋|茅|庞|熊|纪|舒|屈|项|祝|董|梁|杜|阮|蓝|闽|席|季|麻|强|贾|路|娄|危|江|童|颜|郭|梅|盛|林|刁|锺|徐|丘|骆|高|夏|蔡|田|樊|胡|凌|霍|虞|万|支|柯|昝|管|卢|莫|经|房|裘|缪|干|解|应|宗|丁|宣|贲|邓|郁|单|杭|洪|包|诸|左|石|崔|吉|钮|龚|程|嵇|邢|滑|裴|陆|荣|翁|荀|羊|於|惠|甄|麹|家|封|芮|羿|储|靳|汲|邴|糜|松|井|段|富|巫|乌|焦|巴|弓|牧|隗|山|谷|车|侯|宓|蓬|全|郗|班|仰|秋|仲|伊|宫|宁|仇|栾|暴|甘|斜|厉|戎|祖|武|符|刘|景|詹|束|龙|叶|幸|司|韶|郜|黎|蓟|薄|印|宿|白|怀|蒲|邰|从|鄂|索|咸|籍|赖|卓|蔺|屠|蒙|池|乔|阴|郁|胥|能|苍|双|闻|莘|党|翟|谭|贡|劳|逄|姬|申|扶|堵|冉|宰|郦|雍|郤|璩|桑|桂|濮|牛|寿|通|边|扈|燕|冀|郏|浦|尚|农|温|别|庄|晏|柴|瞿|阎|充|慕|连|茹|习|宦|艾|鱼|容|向|古|易|慎|戈|廖|庾|终|暨|居|衡|步|都|耿|满|弘|匡|国|文|寇|广|禄|阙|东|欧|殳|沃|利|蔚|越|夔|隆|师|巩|厍|聂|晁|勾|敖|融|冷|訾|辛|阚|那|简|饶|空|曾|毋|沙|乜|养|鞠|须|丰|巢|关|蒯|相|查|后|荆|红|游|竺|权|逑|盖|益|桓|公|万俟|司马|上官|欧阳|夏侯|诸葛|闻人|东方|赫连|皇甫|尉迟|公羊|澹台|公冶|宗政|濮阳|淳于|单于|太叔|申屠|公孙|仲孙|轩辕|令狐|锺离|宇文|长孙|慕容|鲜于|闾丘|司徒|司空|丌官|司寇|仉|督|子车|颛孙|端木|巫马|公西|漆雕|乐正|壤驷|公良|拓拔|夹谷|宰父|谷梁|晋|楚|阎|法|汝|鄢|涂|钦|段干|百里|东郭|南门|呼延|归|海|羊舌|微生|岳|帅|缑|亢|况|后|有|琴|梁丘|左丘|东门|西门|商|牟|佘|佴|伯|赏|南宫|墨|哈|谯|笪|年|爱|阳|佟|第五|言|福"
        nameList = nameList.split("|")
        let name = nameList[Math.floor(Math.random() * nameList.length)]
        var _rsl1 = "";
        var _rsl2 = "";
        var _randomUniCode1 = Math.floor(Math.random() * (40870 - 19968) + 19968).toString(16);
        var _randomUniCode2 = Math.floor(Math.random() * (40870 - 19968) + 19968).toString(16);
        eval("_rsl1=" + '"\\u' + _randomUniCode1 + '"');
        eval("_rsl2=" + '"\\u' + _randomUniCode2 + '"');
        if (Math.floor(Math.random() * 10) > 5) {
            return name + _rsl1 + _rsl2
        } else {
            return name + _rsl1
        }
    }
    /* 单个文字 */
    function getMathChara() {
        var _rsl1 = "";
        var _randomUniCode1 = Math.floor(Math.random() * (40870 - 19968) + 19968).toString(16);
        eval("_rsl1=" + '"\\u' + _randomUniCode1 + '"');
        return _rsl1;
    }
    /* 返回一句话 */
    /* 
     必须 getMathOneChara 传固定true  [结尾状态 结尾是句号 ,不是结尾是逗号]
     max 默认值20 
     min 默认值10  一句话
     */
    function getMathOneChara(endingType, max, min) {
        let isgetMathOneChara = endingType ?? true;
        let setMax = max ?? 20;
        let setMin = min ?? 10;
        let length = Math.floor(Math.random() * (setMax - setMin) + setMin);
        let chara = ""
        for (let i = 0; i < length; i++) {
            chara = chara + getMathChara();
        }
        if (isgetMathOneChara) {
            chara = chara + ""
        } else {
            chara = chara + ""
        }
        return chara;
    }
    /* 随机多句话 /一句话[中文] 二次封装 */
    /* 
    OneChara false一句话/true多句话  
    max 默认 7 
    min 默认 3 多个
     */
    function getMathChin(OneChara, max, min) {
        let CharaBoor = OneChara ?? true; // 默认只有一句话 ,否则随机3-7句话 
        let setMin = min ?? 3;
        let setMax = max ?? 7;
        let CharaLength = 1
        let chara = "";
        if (CharaBoor) { //多句话 
            CharaLength = Math.floor(Math.random() * (setMax - setMin) + setMin); //随机句子长度 ; 
            for (let i = 0; i < CharaLength; i++) {
                if (i == CharaLength - 1) {
                    chara = chara + getMathOneChara(true);
                } else {
                    chara = chara + getMathOneChara(false);
                }
            }
        } else { //一句话
            chara = chara + getMathOneChara(true);
        }
        return chara;
    }
    /* 随机单词 */
    /* 
     initial  首字母是否大写 [true / false]
     max 单词最大长度 默认10 
     min 单词最短长度 默认3
     */
    function getRandomWord(initial, max, min) {
        let setMax = max ?? 10;
        let setMin = max ?? 3;
        let setInitial = !initial ?? true; //默认首字母是大写的 
        let lowerCaseLetter = "qwertyuiopasdfghjklzxcvb";
        let capitalLetter = "QWERTYUIOPASDFGHJKLZXCVBNM";
        let lowerCase = lowerCaseLetter.split("");
        let capital = capitalLetter.split("");
        let randomWordNumher = Math.floor(Math.random() * (setMax - setMin) + setMin);
        let getWord = ""
        if (setInitial) { // 首字母大写 
            for (let i = 0; i < randomWordNumher; i++) {
                if (i == 0) {
                    getWord = getWord + capital[Math.floor(Math.random() * capital.length)]
                } else {
                    getWord = getWord + lowerCase[Math.floor(Math.random() * lowerCase.length)]
                }
            }
        } else { // 首字母不大写
            for (let i = 0; i < randomWordNumher; i++) {
                getWord = getWord + lowerCase[Math.floor(Math.random() * lowerCase.length)]
            }
        }
        return getWord;
    }
    /* 随机一句英文句子  */
    /* 
     max 默认 7 
     min 默认 3 
     */
    function getRandomEnglish(endingType, max, min) {
        let ending = endingType ? endingType : false;
        let setMax = max ? max : 7;
        let setMin = min ? min : 3;
        let paragraphNumber = Math.floor(Math.random() * (setMax - setMin) + setMin);
        let paragraph = ""
        for (let i = 0; i < paragraphNumber; i++) {
            if (i == 0) {
                paragraph = paragraph + getRandomWord(true) + " "
            } else if (i == paragraphNumber - 1) {
                if (ending) {
                    paragraph = paragraph + getRandomWord(false) + "."
                } else {
                    paragraph = paragraph + getRandomWord(false) + ","
                }
            } else {
                paragraph = paragraph + getRandomWord(false) + " "
            }
        }
        return paragraph;
    }
    /* 返回多句英文 */
    /*   
    endingType
     min 默认值 3 
     max 默认值 7
     */
    function getRandomMultiEnglist(endingType, min, max) {
        let ending = endingType ? endingType : false
        let setMin = min ? min : 3;
        let setMax = max ? max : 7;
        let length = Math.floor(Math.random() * (setMax - setMin) + setMin)
        let paragraph = "";
        for (let i = 0; i < length; i++) {
            if (i == length - 1) {
                paragraph = paragraph + getRandomEnglish(true)
            } else {
                paragraph = paragraph + getRandomEnglish(false)
            }
        }
        return paragraph;
    }

    使用方法  

    let arr = {
    		name: 'getMathName()',
    		chack: 'getMathBoolean(1)',
    		mathNumber: 'getMathNumber()',
    		mathcolor:'getMathColor("rgb")',
    		mathdate : 'getMathDate()',
    		title:'getMathOneChara()',
    		paragraph : 'getMathChin()'
    	}
    	let arrList = setMathData(arr,5) ; // 返回符合规范的多条数据 
    

      

  • 相关阅读:
    poj3436(ACM Computer Factory)
    一位ACMer过来人的心得
    poj1459(Power Network)
    (转)网络流—最大流(Edmond-Karp算法)
    poj1611(The Suspects)
    构建之法阅读笔记01
    第三周总结
    全国疫情可视化地图
    第二周总结
    作业--数组(大数)
  • 原文地址:https://www.cnblogs.com/zxli/p/16073940.html
Copyright © 2020-2023  润新知