Java 如何生成介于1和任何值之间的随机大整数?

Java 如何生成介于1和任何值之间的随机大整数?,java,android,random,android-studio,biginteger,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(getBaseC

我正在尝试生成随机数,并使用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值之外的字节,这会影响生成的数字的范围吗? Im只从523-1003中获取值,但我想从1-anything生成随机数,并在probablePrime()中检查它们;方法

这是怎么可能的?

查看javadoc以了解:

公共静态BigInteger probablePrime(整数位长度, 随机数(rnd)

返回一个可能为素数且具有指定位长度的正BigInteger。此方法返回的BigInteger是复合的概率不超过2-100

参数:

  • bitLength—返回的BigInteger的位长度。[我的重点]
  • rnd—用于选择要测试素性的候选项的随机位源
您会注意到,该参数是要获取的素数中的位数,因此10表示0到1023是候选

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

int numBits = Integer.highestOneBit(yourLimit);

并且丢弃超过你的极限的素数。

我不知道当我们谈论数字时“任何东西”是什么,也许你应该告诉meen任何东西都可以是随机数,没有任何特定的范围。link:@RC。谢谢我已将其添加到答案的开头。因此10将给出0-1023的范围?任务是创建一个应用程序,该应用程序正在搜索并存储越来越大的素数以存档。@Spoofy是的,它应该是,因为1023是10位(但我不确定1023本身是否为素数)