基本上我使用randNo = BigInteger.probablePrime(1024,r)生成了一个随机的1024位数。但是,现在我想使用BitInteger randNo创建另一个随机数,其中randNo具有最大值,2为最小值,即从2到randNo的随机数。
关于如何实现这一目标的任何想法?不确定是否需要某种转换为字节才能传递给securerandom。
任何帮助都将受到高度赞赏。
谢谢,
萨姆
答案 0 :(得分:0)
这是我想到的一种创造性方式
BigInteger nextRandNo = new BigInteger(randNo).minus(BigInteger.valueOf(2L));
for(int i = 0; i < randNo.bitLength(); i++)
{
if(r.nextBoolean())
nextRandNo = nextRandNo.flipBip(i);
}
nextRandNo = nextRandNo.plus(BigInteger.valueOf(2L));
它可能不是世界上最快的东西,但它会确保每一位得到一点熵,它应该会给你一个介于2和BigInteger值之间的BigInteger:)