How to create a random 16 digits number, with specific first digits?
我想在Java中创建一个随机生成的16位数字,但是有一个需要我的前两个数字是"52"。例如,5289-7894-2435-1967。我正在考虑使用随机生成器创建一个14位数字,然后添加一个整数5200 0000 0000。我试着寻找类似的问题,但找不到有用的东西。我不熟悉数学方法,也许它能帮我解决这个问题。
首先,您需要生成一个随机的14位数字,就像您所做的那样:
1 |
号
然后在开头添加
1 | long number = 5200000000000000L + first14; |
另一种方法同样有效,而且可以节省内存,因为
1 2 3 4 5 6 7 | //Declare this before you need to use it java.util.Random rng = new java.util.Random(); //Provide a seed if you want the same ones every time ... //Then, when you need a number: long first14 = (rng.nextLong() % 100000000000000L) + 5200000000000000L; //Or, to mimic the Math.random() option long first14 = (rng.nextDouble() * 100000000000000L) + 5200000000000000L; |
。
注意,与
1 2 3 4 5 6 7 |
您可以生成14个随机数字,然后在"52"开头追加。例如。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Tes { public static void main(String[] args) { System.out.println(generateRandom(52)); } public static long generateRandom(int prefix) { Random rand = new Random(); long x = (long)(rand.nextDouble()*100000000000000L); String s = String.valueOf(prefix) + String.format("%014d", x); return Long.valueOf(s); } } |
- 创建14个随机数字。与
Math.random 一起 - 在"52"开始时连接到它。
- 用
Integer.parseInt(String) 方法转换字符串