数字+字符的随机工具

本文最后更新于:2025年2月18日 下午

数字+字符的随机工具

前端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function randomString(len) {
const CHARACTERS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
const BASE = CHARACTERS.length;
let result = '';

while (result.length < len) {
// 生成一个大随机数并转换为 62 进制字符串
let randomNum = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);
let randomPart = toBase62(randomNum, CHARACTERS, BASE);
result += randomPart;
}

return result.slice(0, len); // 截取指定长度
}

// 将数字转换为 62 进制字符串
function toBase62(value, characters, base) {
let result = '';
do {
const index = value % base;
result = characters[index] + result;
value = Math.floor(value / base);
} while (value > 0);

return result;
}

// 示例:生成一个长度为 11 的随机字符串
console.log(randomString(11));

后端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Random;

public class RandomStringGenerator {
private static final String CHARACTERS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final int BASE = CHARACTERS.length();
private static final Random RANDOM = new Random();

public static String randomString(int len) {
StringBuilder sb = new StringBuilder(len);

while (sb.length() < len) {
// 生成一个较大的随机数,再将其转换为 62 进制字符串
long randomLong = Math.abs(RANDOM.nextLong());
String randomPart = toBase62(randomLong);
sb.append(randomPart);
}

return sb.substring(0, len); // 截取指定长度
}

// 将数字转换为 62 进制字符串
private static String toBase62(long value) {
StringBuilder sb = new StringBuilder();

do {
int index = (int) (value % BASE);
sb.append(CHARACTERS.charAt(index));
value /= BASE;
} while (value > 0);

return sb.reverse().toString();
}

public static void main(String[] args) {
System.out.println(randomString(11)); // 生成一个长度为 11 的随机字符串
}
}

颜色随机工具

前端

1
2
3
4
5
6
7
function randomColor(len = 6) {
if (len <= 11) {
return Math.random().toString(36).substring(2, 2 + len);
} else {
return randomColor(11) + randomColor(len - 11);
}
}

后端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Random;

public class RandomColorGenerator {
private static final Random RANDOM = new Random();

public static String randomColor(int len) {
StringBuilder sb = new StringBuilder(len);

while (sb.length() < len) {
// 生成一个随机整数,并将其转换为 36 进制字符串
String randomPart = Integer.toString(RANDOM.nextInt(36), 36);
sb.append(randomPart);
}

// 确保生成的字符串满足长度要求
return sb.substring(0, len);
}

public static void main(String[] args) {
System.out.println(randomColor(6)); // 生成一个长度为 6 的随机字符串
}
}


数字+字符的随机工具
https://superlovelace.top/2024/11/12/字符串工具类/
作者
棱境
发布于
2024年11月12日
更新于
2025年2月18日
许可协议