From 2c270139fce735b6dac5ef0751330acd00b0a38f Mon Sep 17 00:00:00 2001 From: yangsy Date: Thu, 14 Aug 2025 12:50:20 +0800 Subject: [PATCH] chore: utils --- src/utils/random-num.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/utils/random-num.ts diff --git a/src/utils/random-num.ts b/src/utils/random-num.ts new file mode 100644 index 0000000..e58d6e9 --- /dev/null +++ b/src/utils/random-num.ts @@ -0,0 +1,29 @@ +export function randomNum(len: number, radix: number) { + const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); + const uuid = [] as string[]; + radix = radix || chars.length; + + if (len) { + // Compact form + for (let i = 0; i < len; i++) { + uuid[i] = chars[0 | (Math.random() * radix)]; + } + } else { + // rfc4122, version 4 form + let r; + + // rfc4122 requires these characters + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; + uuid[14] = '4'; + + // Fill in random data. At i==19 set the high bits of clock sequence as + // per rfc4122, sec. 4.1.5 + for (let i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | (Math.random() * 16); + uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r]; + } + } + } + return uuid.join('') + new Date().getTime(); +}