Java 我试图得到21个随机数,介于0和21之间,它们中的任何一个都可以相等

Java 我试图得到21个随机数,介于0和21之间,它们中的任何一个都可以相等,java,random,counter,Java,Random,Counter,你好,我想打21个号码。 它们都需要是一个介于0到21之间的数字 听起来很简单。。但是 它们需要以随机顺序排列 而非关闭它们可以是相等的 我尝试过很多事情,但其中一些永远是平等的 请帮忙!:) 将检索到的每个随机数保存到一个数组中,然后针对每个新的随机数,对照数组进行检查,如果存在匹配项,则获取另一个随机数,直到它是唯一的将生成的每个随机数保存到一个集合。Set属性不允许添加重复项,因此保证没有重复值。如果您使用LinkedHashSet,还将保证插入顺序(也就是说,数字随机出现的顺序与从集合中

你好,我想打21个号码。 它们都需要是一个介于0到21之间的数字

听起来很简单。。但是

它们需要以随机顺序排列 而非关闭它们可以是相等的

我尝试过很多事情,但其中一些永远是平等的

请帮忙!:)


将检索到的每个随机数保存到一个数组中,然后针对每个新的随机数,对照数组进行检查,如果存在匹配项,则获取另一个随机数,直到它是唯一的

将生成的每个随机数保存到一个
集合
Set
属性不允许添加重复项,因此保证没有重复值。如果您使用
LinkedHashSet
,还将保证插入顺序(也就是说,数字随机出现的顺序与从集合中出来的顺序相同)

在获得20个左右的值后,您还需要停止接受值

我将假设[0,21]适用于您的范围,基本上让您大致了解代码的外观:

public Set<Integer> generateUniqueRandomNumbers(int maxValue) {
    final Set<Integer> uniqueRandomNumbers = new LinkedHashSet<>();
    final Random random = new Random();
    while(uniqueRandomNumbers.size() < maxValue) {
        uniqueRandomNumbers.add(random.nextInt(maxValue));
    }
    return uniqueRandomNumbers;
}
public Set generateUniqueRandomNumbers(int-maxValue){
最终设置uniqueRandomNumbers=新LinkedHashSet();
最终随机数=新随机数();
while(uniqueryandomnumbers.size()
只需将0-21列成一个列表,然后将其洗牌即可

List<Integer> list = new ArrayList<>(21);
for (int i = 0; i < 21; i++)
    list.add(i);
Collections.shuffle(list);
System.out.println(list);
List List=newarraylist(21);
对于(int i=0;i<21;i++)
列表.添加(i);
集合。洗牌(列表);
系统输出打印项次(列表);

将数字1-21放入一个数组中,然后将其洗牌。
List<Integer> list = new ArrayList<>(21);
for (int i = 0; i < 21; i++)
    list.add(i);
Collections.shuffle(list);
System.out.println(list);