-2

我想创建一个提供随机 24 位数字的程序。我尝试了不同的方法,但我不知道如何制作。一个示例响应是392834756843456012349538,它只是一个随机的 24 位数字。

4

5 回答 5

3

这是我能想到的最简单的方法:

@Test
public void random24Numbers() {
    String random = RandomStringUtils.random(24, false, true);
    System.out.println(random);
}

这使用RandomStringUtils.random。第一个参数是长度,第二个参数是“无字母”。第三个说,“给我数字”。这是一个示例输出:

564266161898194666197908

是的,它是一个字符串,但我假设您知道如何将字符串转换为数字。

于 2013-06-25T20:08:12.697 回答
2

此示例适用于生成包含前导零的“数字”长度数,并且不需要任何外部 jar 文件。

private String generateInt(int digits) {
    StringBuilder str = new StringBuilder();
    Random random = new Random();
    for(int i = 0; i < digits; i++) {
        str.append(random.nextInt(10));
    }
    return str.toString();
}

一个示例响应是:

081140561664657769754888
于 2013-11-19T22:15:07.330 回答
0
int[] randomNumbers = new int[24];

for(int i = 0; i < 24; i++) {

    randomNumbers[i] = (int)Math.floor(Math.random() * 10);
    System.out.println(randomNumbers[i]);

}

为响应下面的评论添加了使用此随机数序列设置标签的代码:

String randomString = "";

for(int i = 0; i < 24; i++) {

    randomString = randomString.concat(String.valueOf((int)Math.floor(Math.random() * 10)));

}

NumbersLabel.setText(randomString);
于 2013-06-25T20:14:13.723 回答
0

以下仅使用核心 java.lang 的东西,似乎完成了工作。与其他解决方案一样,结果是字符串而不是 java 数字类型,因为基本的 java 数据类型都不能存储 23 位十进制数。

import java.lang.Math;
import java.lang.StringBuilder;

public class random24 {
    static char digits[] = {'0','1','2','3','4','5','6','7','8','9'};

    public static char randomDecimalDigit() {
        return digits[(int)Math.floor(Math.random() * 10)];
    }

    public static String randomDecimalString(int ndigits) {
        StringBuilder result = new StringBuilder();
        for(int i=0; i<ndigits; i++) {
            result.append(randomDecimalDigit());
        }
        return result.toString();
    }

    public static void main(String[] args) {
        System.out.println(randomDecimalString(24));
    }
}
于 2013-06-25T20:21:49.267 回答
0

请参阅如何在 Java 中生成随机 BigInteger 值?其中提供的代码确实生成不大于的 BigInteger 随机数n

BigInteger r;
do {
    r = new BigInteger(n.bitLength(), rnd);
} while (r.compareTo(n) >= 0);
于 2013-06-26T13:00:22.277 回答