如何在1和任何东西之间生成随机BigInteger数字?

时间:2015-05-07 21:32:59

标签: java android random android-studio biginteger

我试图生成随机数,并且我使用BigInteger类来检查生成的数字是否是带有probablePrime()的素数;

这是我的代码:

btnRun.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Random prng = new Random();

            Toast.makeText(getBaseContext()," " + BigInteger.probablePrime(10,prng), Toast.LENGTH_SHORT).show();

        }
    });

我真的不明白probablePrime()中的第一个参数,在我的情况下是10.我知道它的int值的字节,这是否会影响生成数字的范围? 我只得到523-1003的值但是我想从1-anything 生成随机数并在probablePrime()中检查它们;方法

这怎么可能?

1 个答案:

答案 0 :(得分:1)

查看BigInteger.randomPrime(int, Random)的javadoc:

  

public static BigInteger probablePrime(int bitLength,                                          随机rnd)

     

使用指定的bitLength返回可能为素数的正BigInteger。此方法返回的BigInteger是复合的概率不超过2-100。

     

参数:

     
      
  • 返回的BigInteger的bitLength - bitLength 。 [强调我的]
  •   
  • rnd - 用于选择要测试素数的候选者的随机位源。
  •   

你会注意到参数是要获得的素数中的的数量,因此10表示0到1023是候选者。

如果您希望素数达到特定限制,您应该确定所需的位数:

int numBits = Integer.highestOneBit(yourLimit);

并丢弃超过限额的素数。