我需要随机使用16位数字。我得到的随机函数不能用大数字。我有这个功能:
int pin = new Random().nextInt(10000);
但是,如果我把一个像1000000000000这样的大数字,它将无法工作,因为它不是int,而nextLong对我不起作用。 感谢。
答案 0 :(得分:3)
您可以连接两个随机数以创建更长的随机数。
所以:
这有意义吗?
答案 1 :(得分:1)
您可以尝试使用bigInteger,请参阅此帖子以创建随机大整数How to generate a random BigInteger value in Java?
答案 2 :(得分:0)
您可能希望查看documentation for Random.nextInt(int n),其中讨论了所使用的算法,并使其适用于long。
来自文档:
public int nextInt(int n) {
if (n <= 0)
throw new IllegalArgumentException("n must be positive");
if ((n & -n) == n) // i.e., n is a power of 2
return (int)((n * (long)next(31)) >> 31);
int bits, val;
do {
bits = next(31);
val = bits % n;
} while (bits - val + (n-1) < 0);
return val;
}
点击链接阅读文档以获取更多信息。
答案 3 :(得分:-1)
如果您希望生成具有N位数的任意大的随机数,请尝试
StringBuffer buf=new StringBuffer();
rng=new Random();
for(int a=0;a<N;a++)
buffer.append((char) ('0'+rng.nextInt(10)));
return buffer.toString();