gpt4 book ai didi

java - 确保没有两条随机线是相同的。

转载 作者:太空宇宙 更新时间:2023-11-04 12:41:17 25 4
gpt4 key购买 nike

以下代码非常适合从文件中选取随机行。我如何确保不会出现两行,因为随机可能会再次重复同一行。

BufferedReader reader = new BufferedReader(new FileReader(file));
List<String> lines = new ArrayList<String>();

String line = reader.readLine();
while( line != null ) {
lines.add(line);
line = reader.readLine();
}

Random r = new Random();
int i = 0;
while(i < 4){
System.out.println(lines.get(r.nextInt(lines.size())));
i++;
}

最佳答案

简单:使用Set来跟踪您已经使用过的行。在这里,我添加了一项检查以确保文件中实际上有足够的行以避免无限循环。

// Number of lines to print
final int PRINT_COUNT = 4;

// Check to make sure there are actually 4 lines in the file
if(lines.size() < PRINT_COUNT)
throw new IllegalStateException("Too few lines in file. Total lines="+lines.size());

// Declare a set to record which lines were selected
Set<Integer> chosen = new HashSet<>();

Random r = new Random();

for(int i = 0; i < PRINT_COUNT;) {

int nextInt = r.nextInt(lines.size());

if(!chosen.contains(nextInt)){
chosen.add(nextInt);
System.out.println(lines.get(nextInt));
i++;
}
}

注意:作为一般规则,您希望缩小变量的范围。因此,我将您的 while 循环转换为 for 循环,并且仅在找到唯一行号时递增 i

关于java - 确保没有两条随机线是相同的。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com