我正在尝试使用Java通过math.random方法生成随机ID或车牌(包含随机字母和/或数字的字符串)。
有没有一种方法可以使用math.random生成一个介于A到Z之间(正好是ZJW或LRP)的正好三个字符的随机字符串,而无需求助于随机类方法?基本上,只使用一次random方法,而不要使用类似的方法:
char a = (char) (Math.random()*26+'A');
char b = (char) (Math.random()*26+'A');
char c = (char) (Math.random()*26+'A');
System.out.println("" + a + b + c);
我在此解决方案上的所有在线研究都只指向随机类:(。
答案 0 :(得分:1)
如果您坚持只使用一个随机通话,则可以执行以下操作:
import java.util.Random;
public class Main {
public static void main(String[] args) {
int r = (int) (Math.random() * 999999);
double N = 26.0/99.0;
char a = (char) ((r - (r / 100) * 100) * N + 'A');
char b = (char) ((r / 100 - (r / 10000) * 100) * N + 'A');
char c = (char) ((r / 10000 - (r / 1000000) * 100) * N + 'A');
System.out.println("" + a + b + c);
}
}
这是此代码生成的10个随机字符串:
RLN
JMZ
SBZ
NSA
XJM
JGL
PSJ
ZEO
DNX
WLT
您还可以从Apache commons-lang使用RandomStringUtils
:
RandomStringUtils.randomAlphanumeric(3).toUpperCase()