java - 使用预定义库在 Java 中生成 4 位唯一随机数?

标签 java random

<分区>

我想在 Java 中生成 4 位唯一随机数。

假设我运行该应用程序 1000 次,那么每次我都应该获得唯一的随机数。

我试过使用 UUID,但它是很长的随机代码。我想要 4 位数的随机代码。

到目前为止,我尝试使用以下代码 -

int num = -1;

ArrayList<Integer> arNumber = new ArrayList<Integer>();
for(int x = 0; x < 10; x++)
{
    arNumber.add(x);
}
Collections.shuffle(arNumber);

String strNum = "";
for(int i = 0; i < 4; i++)
    strNum = strNum + arNumber.get(new Random().nextInt(10));

num = Integer.parseInt(strNum);

这段代码工作正常,但我怀疑它会在几千之后重复一个数字。

Java 中是否有可用的内置/预定义功能/库/算法?

最佳答案

在我的理解中,如果你想生成一个 4 位唯一随机数,它意味着 0 到 9999 之间的数字。在这种情况下,

ArrayList<Integer> arNumber = new ArrayList<Integer>();
for (int x = 0; x < 10; x++) { 
    ...

只会在列表中产生 10 个数字。我会这样做

class RandomGenerator {
    List<Integer> ints = new ArrayList<>();
    int i = 0;

    RandomGenerator() {
        for (int i = 0; i < 10000; i++) {
            ints.add(i);
        }
        Collections.shuffle(ints);
    }

    int nextInt() {
        return ints.get(i++);
    }
}

关于java - 使用预定义库在 Java 中生成 4 位唯一随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668005/

相关文章:

java - BlockingObservable.last() 什么时候返回?

java - Intellij 堆大小,初始堆大小设置为大于最大堆大小的值

java - 设置的种子值不会提供正确的数字输出

javascript - 我需要另一种方法来使用数组和随机生成器对此进行编码

mysql - 如何在 SQL 中用随机字母和数字填充现有列?

java - Spring调度程序servlet找不到index.html。在 DispatcherServlet 中未找到带有 URI [] 的 HTTP 请求的映射

java - Java中的错误消息(流和Lambda理解)

java - 方法不覆盖抽象父类(super class)

c++ - 等效于 C++ 中的这个 Python 随机数生成器?

c++ - 是否可以为 boost::random::uniform_int_distribution<> 设置确定性种子?