Java 随机抽样arraylist的子集,不进行替换
我有一个输入,每行包含一个符号,并使用扫描仪读取数组列表(可能)。我想从这个arraylist(size=3)中随机获得1000个数据子集,并将其逐行保存到文件中(每行都是一个子集) 因此,输入如下: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
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();
哇