我想在Java中创建一个随机生成的16位数字。但是有一个问题,我需要将前两位数字设为“ 52”。例如52 89-7894-2435-1967。我当时正在考虑使用随机生成器并创建一个14位数字,然后添加一个整数5200 0000 00000000。我试图查找类似的问题,但实际上找不到有用的东西。我不熟悉数学方法,也许可以为我解决问题。
首先,您需要像生成的那样生成一个随机的14位数字:
long first14 = (long) (Math.random() * 100000000000000L);
Run Code Online (Sandbox Code Playgroud)
然后52在开头添加。
long number = 5200000000000000L + first14;
Run Code Online (Sandbox Code Playgroud)
由于Math.random()创建了一个内部Random对象,因此另一种同样有效的方法将节省内存:
//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;
Run Code Online (Sandbox Code Playgroud)
请注意,与nextLong() % n不会提供完全随机的分布Math.random()。但是,如果您只是生成测试数据,而不必一定是加密的,它也可以正常工作。由您决定使用哪一个。
| 归档时间: |
|
| 查看次数: |
14389 次 |
| 最近记录: |