Java中的随机16位数字函数

Java中的随机16位数字函数,java,random,Java,Random,我需要做一个16位数字的随机数。我得到的随机函数对大数不起作用。我得到了这个函数: int pin = new Random().nextInt(10000); 但是如果我输入一个大的数字,比如10000000000,它将不起作用,因为它不是int,下一个长度对我来说不是那样的。 谢谢。您可以将两个随机数串联起来以创建更长的随机数 因此: 使用nextInt(100000000)获取8位随机数 位移动它8个十位数,或向左移动大约10位 获取第二个8位随机数 按位或两个数字,以获得最终的长随

我需要做一个16位数字的随机数。我得到的随机函数对大数不起作用。我得到了这个函数:

 int pin = new Random().nextInt(10000); 
但是如果我输入一个大的数字,比如10000000000,它将不起作用,因为它不是int,下一个长度对我来说不是那样的。
谢谢。

您可以将两个随机数串联起来以创建更长的随机数

因此:

  • 使用nextInt(100000000)获取8位随机数
  • 位移动它8个十位数,或向左移动大约10位
  • 获取第二个8位随机数
  • 按位或两个数字,以获得最终的长随机数

  • 这有意义吗?

    如果您希望生成任意大的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顺序。你不应该在家庭作业问题中张贴答案。他正在学习,我们应该帮助他用自己的腿找到答案,而不是告诉他答案。