生成三个字符的字符串

时间:2019-07-10 20:40:22

标签: java

我正在尝试使用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);

我在此解决方案上的所有在线研究都只指向随机类:(。

1 个答案:

答案 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()