当前位置: 首页 > 知识库问答 >
问题:

对于随机数[重复]

章心水
2023-03-14

我已经生成了一个从1-100的随机数,但不会出现重复的数字(例如,如果10来一,那么它不会再来了。)(这个不行)

 final Random random = new Random();
    ArrayList<Integer> arrayList = new ArrayList<Integer>();

    while (arrayList.size() < 6) { // how many numbers u need - it will 6
        int a = random.nextInt(91)+1; // this will give numbers between 1 and 90.

        if (!arrayList.contains(a)) {
            arrayList.add(a);
        }
    }

我如何使用生成的出现在屏幕底部,使用户必须知道什么数字是1-100所有的数字是做了,然后没有数字生成

有谁能帮帮我吗?

共有2个答案

轩辕修能
2023-03-14

试试这个。

Integer[] arr = new Integer[100];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = i;
    }
    Collections.shuffle(Arrays.asList(arr));
帅博远
2023-03-14

试试这个可能对你有帮助

Random rng = new Random(); // Ideally just create one instance globally
List<Integer> generated = new ArrayList<Integer>();
for (int i = 0; i < numbersNeeded; i++)
{
    while(true)
    {
        Integer next = rng.nextInt(max) + 1;
        if (!generated.contains(next))
        {
            // Done for this iteration
            generated.add(next);
            break;
        }
    }
}
 类似资料:
  • 问题内容: 作为我项目的一部分,我需要通过提供一组数字来创建不重复的2或3位数字随机数。我不想为此实现一个列表或数组,因为我应该为每个函数调用获取1个随机数。 我尝试使用Java的SecureRandom类来做到这一点。我也从某些站点获得了帮助,但是我陷入了困境,我们可以改组VALUES并完成它吗?但是我不知道该怎么办。谁能帮我? 问题答案: Fisher- yates随机播放算法 是必经之路。其

  • 问题内容: java.util.Random的实例是线程安全的。但是,跨线程并发使用同一java.util.Random实例可能会引起争用并因此导致性能下降。考虑在多线程设计中改用ThreadLocalRandom。 什么样的争执因而表现不佳?有人可以在这里给我解释吗?我不知道在Random和ThreadLocalRandom中使用什么算法使它们与众不同。 问题答案: 这可能会有所帮助: http

  • 坦率地说,我一直在思考如何实现一些超出我数学能力的东西。因此,请随意尝试并为我指出正确的方向,而不是完整的代码解决方案,我将非常感谢您的帮助。 所以,假设我对文本进行了分析,并生成了不同两个字符组合的频率表。我已将这些存储在26x26阵列中。如。 所以我想随机选择这两个字符组合,但我想根据频率来“权衡”我的选择。也就是说,上面的AB应该是AA的“可能性”的15倍。而且,很明显,选择永远不应该返回类

  • 问题内容: 我想创建一组随机数,在Java中没有重复项。 例如,我有一个数组来存储10,000个从0到9999的随机整数。 这是我到目前为止的内容: 但是上面的代码创建重复项。如何确保随机数不重复? 问题答案: 例如:

  • 如何在1到9之间生成9个随机数,而不重复,一个接一个。它类似于:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9]{4}中。我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了6个数字,我们必须再生成3个数字,这个过程会有点慢。当范围从[1,9]更改为[1,1000]时,这种方法听起来不正确。有人能提出一个替代方法吗。

  • 在本例中,最大值仅为5,因此我可以逐个检查副本,但如何以更简单的方式执行此操作?例如,如果最大值为20,该怎么办?谢谢