Java中的随机16位数字函数
我需要做一个16位数字的随机数。我得到的随机函数对大数不起作用。我得到了这个函数:Java中的随机16位数字函数,java,random,Java,Random,我需要做一个16位数字的随机数。我得到的随机函数对大数不起作用。我得到了这个函数: int pin = new Random().nextInt(10000); 但是如果我输入一个大的数字,比如10000000000,它将不起作用,因为它不是int,下一个长度对我来说不是那样的。 谢谢。您可以将两个随机数串联起来以创建更长的随机数 因此: 使用nextInt(100000000)获取8位随机数 位移动它8个十位数,或向左移动大约10位 获取第二个8位随机数 按位或两个数字,以获得最终的长随
int pin = new Random().nextInt(10000);
但是如果我输入一个大的数字,比如10000000000,它将不起作用,因为它不是int,下一个长度对我来说不是那样的。
谢谢。您可以将两个随机数串联起来以创建更长的随机数 因此:
这有意义吗?如果您希望生成任意大的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();
StringBuffer buf=new-StringBuffer();
rng=新随机数();
对于(int a=0;a您可以尝试使用bigInteger,请参阅本文创建随机大int您可能想看看,其中讨论了使用的算法,并将其调整为与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;
}
public int nextInt(int n){
如果(n>31);
int位,val;
做{
比特=下一个(31);
val=位%n;
}而(位-val+(n-1)<0);
返回val;
}
按照链接阅读文档以了解更多信息。是的,这很有意义。我在考虑这一点,但我在寻找是否是另一条最短的途径,但非常感谢。左移8位并不能满足您的需要。最接近的近似值是每x 1000移动10位。是的,对不起。您需要向左移动8个十位,以便10个二进制位。为什么不能使用nextLong()
和除法以及mod
s?同样,这是数学作业还是Java作业?因为如果你在做数学作业,获得均匀分布的伪随机序列会涉及到一些微妙之处。nextLong
和mod
是被均匀分布的伪随机序列所涉及的微妙之处咬一口的好方法om顺序。你不应该在家庭作业问题中张贴答案。他正在学习,我们应该帮助他用自己的腿找到答案,而不是告诉他答案。