如何忽略随机数发生器中的负值

时间:2013-05-05 08:30:10

标签: java random

我正在使用BigInteger类生成随机的大素数但我不断得到负值。怎么可能忽略所有负面回报?我应该怎么做到修复10号?

public class Gen{

    public static void main(String[] args) throws IOException {
        Random rand = new SecureRandom();
        BigInteger.probablePrime(100, rand);
        System.out.println(BigInteger.probablePrime(100, rand).longValue());
    }
}

1 个答案:

答案 0 :(得分:4)

您的错误是因为溢出。 Java中的long只能保存最多9,223,372,036,854,775,807的值。

如果您的程序生成的大于此值的随机数,则在尝试将其填入long时可以获得负值。您可以在Javadoc for BigInteger#longValue()

中看到这一点
  

请注意,此转换可能会丢失有关BigInteger值整体幅度的信息,也会返回符号相反的结果。