在java中设置随机BigInteger的长度

时间:2014-03-02 08:00:58

标签: java biginteger

假设我从用户那里取输入“8”,我应该能够生成长度为8位的随机BigInteger。假设我输入“20”,我应该能够生成一个长度为20位的随机BigInteger。我怎样才能做到这一点?

我从示例中提到了以下代码。

int SIZE = 512;
p = new BigInteger(SIZE, 15, new Random());
q = new BigInteger(SIZE, 15, new Random());

谁能告诉我这些论点是什么意思?或者你能建议一个更简单的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

BigInteger(int bitLength,           确定的,           随机rnd)

构造一个随机生成的正BigInteger,它可能是素数,具有指定的bitLength。 建议首先使用probablePrime方法优先于此构造函数,除非迫切需要指定确定性。

参数:

bitLength - 返回的BigInteger的bitLength。

确定性 - 衡量呼叫者愿意容忍的不确定性的指标。新BigInteger表示素数的概率将超过(1 - 1/2)。此构造函数的执行时间与此参数的值成比例。

rnd - 用于选择要测试素数的候选者的随机位源。

直接从Oracles网站上获取,希望这正是您所寻找的。

答案 1 :(得分:-1)

整数解

public static int randInt(int min, int max) {

    // Usually this can be a field rather than a method variable
    Random rand = new Random();

    // nextInt is normally exclusive of the top value,
    // so add 1 to make it inclusive
    int randomNum = rand.nextInt((max - min) + 1) + min;

    return randomNum;
}

所以如果你需要8位数的随机数

调用此函数的范围为8位i.e最小8位#和最高8位数。

e.g

randInt(10000000, 99999999)

来源:范围随机数的代码取自此处

How do I generate random integers within a specific range in Java?

您也可以查看nextLong()。这些是统一生成的随机数

http://docs.oracle.com/javase/6/docs/api/java/util/Random.html#nextLong()