首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成随机数2^128

如何生成随机数2^128
EN

Stack Overflow用户
提问于 2019-03-24 13:33:06
回答 2查看 330关注 0票数 0

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

如何在java中使用这么大的数字

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-24 13:50:57

BigInteger构造一个随机生成的BigInteger,在0到(2 2numBits 1)的范围内均匀分布,包括在内。

分布的均匀性假设在rnd中提供了一个公平的随机比特源。注意,这个构造函数总是构造一个非负的BigInteger。

代码语言:javascript
复制
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;
    }

}
票数 4
EN

Stack Overflow用户

发布于 2019-03-24 13:41:56

最大的Java原语数据类型long太小(64位),因此我们必须使用BigInteger

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55324338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档