如何使用标准数据类型生成随机数 2 ^ 128 ?
如何在 java 中处理如此大的数字?
答案 0 :(得分:3)
BigInteger
构造一个随机生成的BigInteger,该整数均匀地分布在0到(2numBits-1)(包括0和2)之间。
分布的均一性假设一个公平的来源 rnd中提供了随机位。请注意,此构造函数始终 构造一个非负的BigInteger。
import java.math.BigInteger;
import java.util.Random;
public class BigRandom {
public static void main(String[] args) {
BigInteger result = getRandomBigInteger();
System.out.println(result);
}
public static BigInteger getRandomBigInteger() {
Random rand = new Random();
BigInteger result = new BigInteger(128, rand); // (2^128-1) maximum value
return result;
}
}
答案 1 :(得分:1)
最大的Java基本数据类型long
太小(64位),因此我们必须使用BigInteger:
SecureRandom rnd = new SecureRandom();
byte[] data = new byte[16]; // 16 * 8 = 128 bit
rnd.nextBytes(data);
BigInteger bigInt = new BigInteger(1, data); // interpret the data as positive number