Java 从集合中的随机值获取优雅数据集

Java 从集合中的随机值获取优雅数据集,java,random,Java,Random,当每个值在随机位置上至少出现一次时,我需要从值(准备集)获取数据集 运行以下代码后,此条件有时才满足。 如何才能提高发电效率 private static Random rand = new Random(); private static int N = 5; public static void main(String[] args){ List<String> indexList = new ArrayList<>();

当每个值在随机位置上至少出现一次时,我需要从值(准备集)获取数据集

运行以下代码后,此条件有时才满足。 如何才能提高发电效率

private static Random rand = new Random();
    private static int N = 5;

    public static void main(String[] args){
        List<String> indexList = new ArrayList<>();
        indexList.add("aaa");
        indexList.add("bbb");
        indexList.add("ccc");
        indexList.add("ddd");


        List<String> generatedDataList = new ArrayList<String>();

        for (int i=0; i<=5; i++) {
            String generatedIndex = getRandomValue(indexList);
            System.out.println("Step " + i+ ": " + generatedIndex);
            generatedDataList.add(generatedIndex);
        }

        }


    static  String getRandomValue(List<String> list){
          return list.get(rand.nextInt(list.size()));
    }
private static Random rand=new Random();
私有静态int N=5;
公共静态void main(字符串[]args){
列表索引列表=新的ArrayList();
添加索引列表(“aaa”);
添加索引列表(“bbb”);
添加索引列表(“ccc”);
添加索引列表(“ddd”);
List generatedatalist=new ArrayList();

对于(int i=0;i您可以使用以下方法洗牌
索引列表

Collections.shuffle(indexList)

如果希望每个字符串至少出现一次,最好的方法是在开始处添加所有字符串,然后只添加两个随机
string
s,最后洗牌列表

List<String> generatedDataList = new ArrayList<String>(indexList);
for (int i = 0; i < 2; i++)    
    generatedDataList.add(getRandomValue(indexList));
Collections.shuffle(generatedDataList);
List generatedatalist=newarraylist(indexList);
对于(int i=0;i<2;i++)
add(getRandomValue(indexList));
集合。洗牌(GeneratedCatalist);

您的意思是要洗牌列表吗?