如何生成一个随机数2 ^ 128

时间:2019-03-24 13:33:07

标签: java

如何使用标准数据类型生成随机数 2 ^ 128

如何在 java 中处理如此大的数字?

2 个答案:

答案 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