java - 在Java中生成一个长随机整数

标签 java android android-studio

我正在尝试找到一种方法来生成一个非常大的随机数。我在网上查找但找不到我要找的东西。我需要生成一个介于 1111111111111111111111 和 9999999999999999999999 之间的随机数;该号码的长度为 22 位。 如果您知道该怎么做,请告诉我。 谢谢

最佳答案

这是满足您需求的经过测试的快速解决方案:

public void generateNumber(){

    BigInteger min = new BigInteger("1111111111111111111111");
    BigInteger max = new BigInteger("9999999999999999999999");

    System.out.println(random(min, max));
}

protected static Random RANDOM = new Random();
public static BigInteger random(BigInteger min, BigInteger max) {
    if(max.compareTo(min) < 0) {
        BigInteger tmp = min;
        min = max;
        max = tmp;
    } else if (max.compareTo(min) == 0) {
        return min;
    }
    max = max.add(BigInteger.ONE);
    BigInteger range = max.subtract(min);
    int length = range.bitLength();
    BigInteger result = new BigInteger(length, RANDOM);
    while(result.compareTo(range) >= 0) {
        result = new BigInteger(length, RANDOM);
    }
    result = result.add(min);
    return result;
}

关于java - 在Java中生成一个长随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527413/

相关文章:

java - 将一个表中的数百万行与另一个表中的数百万行进行比较的最快方法

java - 如何在 Java 中终止 Python 脚本?

android - 如何通过 contacts api 在 android 中设置照片

java - 如何在Java中创建图像对象?

java - 使用网络自动化工具时,有没有办法绕过 jnlp 文件的下载?

Android getAllNetworkInfo() 已弃用。什么是替代方案?

android - 在 Canvas 上绘制两个位图时,应用程序变得太慢了!

java - android studio 需要很多时间来打开项目?

java - 客户端关闭后,Android TCP 服务器仅显示来自 Python 客户端的消息

android - 在我的 Google Play 帐户中,应用程序登录私钥按钮被禁用