UNPKG

typescript-util

Version:

JS/TS 的简单工具

109 lines 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RandomTool = void 0; const StrUtil_1 = require("../util/StrUtil"); /** * RandomTool * @author 冰凝 * @date 2022-09-19 10:01:51 **/ class RandomTool { /** * 纯数字 * @type {number[]} */ static NUMBER = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; /** * 纯数字不含4 * @type {number[]} */ static FRIENDLY_NUMBERS = [0, 1, 2, 3, 5, 6, 7, 8, 9]; /** * 小写字母 * @type {string[]} */ static LOWER_CASE_LETTERS = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ]; /** * 大写字母 * @type {string[]} */ static UPPERCASE_LETTER = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ]; /** * 随机数生成 * @param pond {number[] | string []} * @param length {number} 每个字符串长度 * @param size {number} 字符串数量 * @return string[] */ static randomStringArr(pond, length, size) { if (!this.checkMaxSizeOk(pond.length, length, size)) { throw new Error('基数 / 位数 过低, 无法生成 ' + size + ' 个'); } const res = {}; for (let i = 0; i < size; i++) { // @ts-ignore res[this.randomString(pond, length)] = 1; } while (Object.keys(res).length < size) { // @ts-ignore res[this.randomString(pond, length)] = 1; } return Object.keys(res); } /** * * @param base 基数 * @param length 位数 (指数) * @param size 期望最大值 * @return 如果能够生成至少 size 个 值, 返回 true; 否则 false */ static checkMaxSizeOk(base, length, size) { const max = Math.pow(base, length); return max > size; } /** * 使用指定字符池 pond, 生成 指定长度 length 的字符串 * @param pond {number [] | string []} * @param length {number} 长度 最终字符串长度 * @return string */ static randomString(pond, length) { let res = new Array(length); const pondLength = pond.length; for (let i = 1; i <= length; i++) { let randomIndex = this.randomNumber(0, pondLength); res.push(pond[randomIndex]); } return res.join(StrUtil_1.StrUtil.EMPTY); } /** * 获得一个随机整数 介于: [min, max) * @param min {number} * @param max {number} * @return {number} */ static randomNumber(min, max) { return Math.floor(Math.random() * (max - min)) + min; } /** * 获得一个随机整数 介于: [min, max] * @param min {number} * @param max {number} * @return {number} */ static randomNumberMax(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } } exports.RandomTool = RandomTool; //# sourceMappingURL=RandomTool.js.map