集合随机取2个以上元素怎么取?

List data = new ArrayList<>();
data.add("鼠");
data.add("牛");
data.add("虎");
data.add("兔");
data.add("龙");
data.add("蛇");
data.add("马");
data.add("羊");
data.add("猴");
data.add("猪");
data.add("狗");
data.add("鸡");

public static List getRandomList(List paramList,int count){
if(paramList.size() return paramList;
}
Random random=new Random();
List tempList=new ArrayList();
List newList=new ArrayList();
int temp=0;
for(int i=0;i<count;i++){
temp=random.nextInt(paramList.size());//将产生的随机数作为被抽list的索引
if(!tempList.contains(temp)){
tempList.add(temp);
newList.add(paramList.get(temp));
}
else{
i--;
}

}
return newList;
}

Collections.shuffle(data),打乱顺序,然后取值就可以了。

Integer random=RandomUtils.nextInt(list.size()); 用这个

这是一个数学问题,将十二生肖抽象为连续的12个数字比如0-12,区间[0,1),[1,2),[2,3)...[11,12)分别代表一个生肖。完成取两个随机生肖,可以分两步走,第一步,从0-12中随机选取一个数。第二步,去除一个生肖的区间长度,0-11之间表示除刚选择生肖外的11个生肖(先确定哪个区间对应哪个生肖),然后从0-11之间随机选择一个数。

直接从 0-11 先取一个随机数,然后再取一个随机数,如果和前一个相同则再取一次,直到取出2个不同的随机数不就可以了?

获取数组长度,在0-长度之间随机取数,然后作为数组的index进行取值

使用java随机数,长度为list的size

for循环,然后用random随机取集合下标

先用random随机一个大于等于2,小于等于12的数,确定出要取几个元素。
然后for循环确定要取的元素个数,再次用random取出0-11的随机数,
将随机数作为你list集合的索引取出对应的值就可以了

循环过程配合随机函数可以实现

random生成随机数,使用for循环获取,下标为随机数的,对象

循环一个随机取数的函数就可以了

data.get((int)Math.random()*12)

random 获取随机下标

public class RandaomData {
public static void main(String[] args) {

    List data = new ArrayList<>();
    data.add("鼠");
    data.add("牛");
    data.add("虎");
    data.add("兔");
    data.add("龙");
    data.add("蛇");
    data.add("马");
    data.add("羊");
    data.add("猴");
    data.add("猪");
    data.add("狗");
    data.add("鸡");

    //集合随机取2个以上元素怎么取?
    ArrayList<String> list = new ArrayList<>();
    int rd = new Random().nextInt(11) + 2; //生成[2,13)
        for (int i = 0; i < rd; i++) {
            int index = new Random().nextInt(data.size()); //获取data集合中的元素索引值
            if (!list.contains(data.get(index).toString()))
                list.add(data.get(index).toString()); //将不重复的元素添加到新的list集合
        }
        if (list.size() >= 2) {
            System.out.println(list);
        }else{
            System.out.println("请重新获取");
        }
}

}