Java 随机抽样arraylist的子集,不进行替换

Java 随机抽样arraylist的子集,不进行替换,java,arraylist,shuffle,Java,Arraylist,Shuffle,我有一个输入,每行包含一个符号,并使用扫描仪读取数组列表(可能)。我想从这个arraylist(size=3)中随机获得1000个数据子集,并将其逐行保存到文件中(每行都是一个子集) 因此,输入如下: AAA BBB CCC DDD EEE FFF 预期产出将是: AAA EEE FFF CCC FFF BBB DDD BBB AAA 这是我到目前为止所拥有的。我对如何表示1000次洗牌以及如何定义大小=3有点结巴。我希望如果我能洗牌1000次,每次都能拿到前3个。这是我的策略 public

我有一个输入,每行包含一个符号,并使用扫描仪读取数组列表(可能)。我想从这个arraylist(size=3)中随机获得1000个数据子集,并将其逐行保存到文件中(每行都是一个子集)

因此,输入如下:

AAA
BBB
CCC
DDD
EEE
FFF
预期产出将是:

AAA EEE FFF
CCC FFF BBB
DDD BBB AAA
这是我到目前为止所拥有的。我对如何表示1000次洗牌以及如何定义大小=3有点结巴。我希望如果我能洗牌1000次,每次都能拿到前3个。这是我的策略

public class sampling {
    public static void main(String[] args) throws FileNotFoundException{
        Scanner scan1 = new Scanner(new File("Symbol.txt"));
        ArrayList<String> Wholelist = new ArrayList<>();
        while (scan1.hasNextLine()){
            String line = scan1.nextLine();
            Wholelist.add(line);
        }
        try{    
            FileWriter stream = new FileWriter(args[2]);
            BufferedWriter out = new BufferedWriter(stream);
            for (int i=0,n=Wholelist.size();i<n; i++){
                Collections.shuffle(Wholelist);
                Wholelist.get(3);
            }
        }
        catch (IOException e) {
            System.err.println("Error: "+ e.getMessage());
        }
    }
}
公共类抽样{
公共静态void main(字符串[]args)引发FileNotFoundException{
Scanner scan1=新扫描仪(新文件(“Symbol.txt”);
ArrayList Wholelist=新的ArrayList();
while(scan1.hasNextLine()){
String line=scan1.nextLine();
完整列表。添加(行);
}
试试{
FileWriter流=新的FileWriter(args[2]);
BufferedWriter out=新的BufferedWriter(流);

对于(int i=0,n=Wholelist.size();i您的思路是正确的。只需循环1000次,而不是最多n次!并使用方法subList(0,3)获取列表的前三个元素

您走在正确的轨道上。只需循环1000次,而不是最多n次!要获取列表的前三个元素,请使用方法子列表(0,3)

您走在正确的轨道上。只需循环1000次,而不是最多n次!要获取列表的前三个元素,请使用方法子列表(0,3)

您的思路是正确的。只需循环1000次,而不是最多n次!要获得列表的前三个元素,请使用方法子列表(0,3)

尝试类似的方法以满足您的要求:

public static void main(String[] args) {
    List<String> wholeList = new ArrayList<>();
    wholeList.add("AAA");
    wholeList.add("BBB");
    wholeList.add("CCC");
    wholeList.add("DDD");
    wholeList.add("EEE");
    wholeList.add("FFF");
    wholeList.add("GGG");

    int randomLimit = wholeList.size();
    Random r = new Random();

    for (int i = 0; i < 1000; i++) {
        // get three random indices from 0(inclusive) to list max size
        // (exclusive)
        int u = r.nextInt(randomLimit);
        int v = r.nextInt(randomLimit);
        int w = r.nextInt(randomLimit);
        // chose your format
        System.out.print(wholeList.get(u) + "\t");
        System.out.print(wholeList.get(v) + "\t");
        System.out.println(wholeList.get(w));
    }
}
publicstaticvoidmain(字符串[]args){
List wholeList=new ArrayList();
完整列表。添加(“AAA”);
完整列表。添加(“BBB”);
完整列表。添加(“CCC”);
完整列表。添加(“DDD”);
完整列表。添加(“EEE”);
完整列表。添加(“FFF”);
完整列表。添加(“GGG”);
int randomLimit=wholeList.size();
随机r=新随机();
对于(int i=0;i<1000;i++){
//从0(包括0)中获取三个随机索引以列出最大大小
//(独家)
int u=r.nextInt(随机极限);
int v=r.nextInt(随机极限);
int w=r.nextInt(随机极限);
//选择您的格式
System.out.print(wholeList.get(u)+“\t”);
System.out.print(wholeList.get(v)+“\t”);
System.out.println(wholeList.get(w));
}
}

尝试类似的方法以满足您的需求:

public static void main(String[] args) {
    List<String> wholeList = new ArrayList<>();
    wholeList.add("AAA");
    wholeList.add("BBB");
    wholeList.add("CCC");
    wholeList.add("DDD");
    wholeList.add("EEE");
    wholeList.add("FFF");
    wholeList.add("GGG");

    int randomLimit = wholeList.size();
    Random r = new Random();

    for (int i = 0; i < 1000; i++) {
        // get three random indices from 0(inclusive) to list max size
        // (exclusive)
        int u = r.nextInt(randomLimit);
        int v = r.nextInt(randomLimit);
        int w = r.nextInt(randomLimit);
        // chose your format
        System.out.print(wholeList.get(u) + "\t");
        System.out.print(wholeList.get(v) + "\t");
        System.out.println(wholeList.get(w));
    }
}
publicstaticvoidmain(字符串[]args){
List wholeList=new ArrayList();
完整列表。添加(“AAA”);
完整列表。添加(“BBB”);
完整列表。添加(“CCC”);
完整列表。添加(“DDD”);
完整列表。添加(“EEE”);
完整列表。添加(“FFF”);
完整列表。添加(“GGG”);
int randomLimit=wholeList.size();
随机r=新随机();
对于(int i=0;i<1000;i++){
//从0(包括0)中获取三个随机索引以列出最大大小
//(独家)
int u=r.nextInt(随机极限);
int v=r.nextInt(随机极限);
int w=r.nextInt(随机极限);
//选择您的格式
System.out.print(wholeList.get(u)+“\t”);
System.out.print(wholeList.get(v)+“\t”);
System.out.println(wholeList.get(w));
}
}

尝试类似的方法以满足您的需求:

public static void main(String[] args) {
    List<String> wholeList = new ArrayList<>();
    wholeList.add("AAA");
    wholeList.add("BBB");
    wholeList.add("CCC");
    wholeList.add("DDD");
    wholeList.add("EEE");
    wholeList.add("FFF");
    wholeList.add("GGG");

    int randomLimit = wholeList.size();
    Random r = new Random();

    for (int i = 0; i < 1000; i++) {
        // get three random indices from 0(inclusive) to list max size
        // (exclusive)
        int u = r.nextInt(randomLimit);
        int v = r.nextInt(randomLimit);
        int w = r.nextInt(randomLimit);
        // chose your format
        System.out.print(wholeList.get(u) + "\t");
        System.out.print(wholeList.get(v) + "\t");
        System.out.println(wholeList.get(w));
    }
}
publicstaticvoidmain(字符串[]args){
List wholeList=new ArrayList();
完整列表。添加(“AAA”);
完整列表。添加(“BBB”);
完整列表。添加(“CCC”);
完整列表。添加(“DDD”);
完整列表。添加(“EEE”);
完整列表。添加(“FFF”);
完整列表。添加(“GGG”);
int randomLimit=wholeList.size();
随机r=新随机();
对于(int i=0;i<1000;i++){
//从0(包括0)中获取三个随机索引以列出最大大小
//(独家)
int u=r.nextInt(随机极限);
int v=r.nextInt(随机极限);
int w=r.nextInt(随机极限);
//选择您的格式
System.out.print(wholeList.get(u)+“\t”);
System.out.print(wholeList.get(v)+“\t”);
System.out.println(wholeList.get(w));
}
}

尝试类似的方法以满足您的需求:

public static void main(String[] args) {
    List<String> wholeList = new ArrayList<>();
    wholeList.add("AAA");
    wholeList.add("BBB");
    wholeList.add("CCC");
    wholeList.add("DDD");
    wholeList.add("EEE");
    wholeList.add("FFF");
    wholeList.add("GGG");

    int randomLimit = wholeList.size();
    Random r = new Random();

    for (int i = 0; i < 1000; i++) {
        // get three random indices from 0(inclusive) to list max size
        // (exclusive)
        int u = r.nextInt(randomLimit);
        int v = r.nextInt(randomLimit);
        int w = r.nextInt(randomLimit);
        // chose your format
        System.out.print(wholeList.get(u) + "\t");
        System.out.print(wholeList.get(v) + "\t");
        System.out.println(wholeList.get(w));
    }
}
publicstaticvoidmain(字符串[]args){
List wholeList=new ArrayList();
完整列表。添加(“AAA”);
完整列表。添加(“BBB”);
完整列表。添加(“CCC”);
完整列表。添加(“DDD”);
完整列表。添加(“EEE”);
完整列表。添加(“FFF”);
完整列表。添加(“GGG”);
int randomLimit=wholeList.size();
随机r=新随机();
对于(int i=0;i<1000;i++){
//从0(包括0)中获取三个随机索引以列出最大大小
//(独家)
int u=r.nextInt(随机极限);
int v=r.nextInt(随机极限);
int w=r.nextInt(随机极限);
//选择您的格式
System.out.print(wholeList.get(u)+“\t”);
System.out.print(wholeList.get(v)+“\t”);
System.out.println(wholeList.get(w));
}
}
试试这个

                import java.io.BufferedWriter;
                import java.io.File;
                import java.io.FileNotFoundException;
                import java.io.FileWriter;
                import java.io.IOException;
                import java.util.ArrayList;
                import java.util.Collections;
                import java.util.Random;
                import java.util.Scanner;

                public class FileTester {
                    public static void main(String[] args) throws FileNotFoundException {
                        Scanner scan1 = new Scanner(new File("YOUR_INPUT_FILE"));
                        ArrayList<String> wholeList = new ArrayList<String>();
                        String line = "";
                        while (scan1.hasNextLine()) {
                            line = scan1.nextLine();
                                wholeList.add( line );
                        }
                        try {
                            FileWriter stream = new FileWriter("YOUR_OUTPUT_FILE");
                            BufferedWriter out = new BufferedWriter(stream);
                            for (int i = 0, n = wholeList.size(); i < n; i++) {
                                Random r = new Random();
                                Collections.shuffle(wholeList);
                                out.append(wholeList.get( r.nextInt(wholeList.size()) ) + "\t");
                                out.append(wholeList.get( r.nextInt(wholeList.size()) ) + "\t");
                                out.append(wholeList.get( r.nextInt(wholeList.size()) ) + "\t");
                                out.append("\n");
                            }
                            out.close();
                        } catch (IOException e) {
                            System.err.println("Error: " + e.getMessage());
                        }
                    }
                }
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Random;
导入java.util.Scanner;
公共类文件测试器{
公共静态void main(字符串[]args)引发FileNotFoundException{
Scanner scan1=新扫描仪(新文件(“您的输入文件”);
ArrayList wholeList=新的ArrayList();
字符串行=”;
while(scan1.hasNextLine()){
line=scan1.nextLine();
哇