Java随机数生成器

Rya*_*les 4 java random biginteger

是否可以让用户选择随机数的位数,特别是随机的Big Integer?例如,如果用户希望它长15位,则随机数生成器将仅生成15位长的大整数.

das*_*ght 5

您可以使用BigInteger指定二进制数字位数的构造函数:BigInteger(int numBits, Random rnd).对于用户想要的每三个十进制数字,您需要大约十位二进制数字.例如,如果您需要30位随机数BigInt,请使用100个二进制数字.

您可以通过使用切断不必要的数字remainder(10^30),并在循环中执行以确保初始数字不为零,确保正确的位数,如下所示:

Random rnd = new Random(123);
BigInteger tenPow30 = new BigInteger("10").pow(30);
BigInteger min = new BigInteger("10").pow(29);
BigInteger r;
do {
        r = new BigInteger(100, rnd).remainder(tenPow30);
} while (r.compareTo(min) < 0);
System.out.println(r);
Run Code Online (Sandbox Code Playgroud)

链接到演示.