我正在编写每次提示系统将生成随机的名称和日期顺序的代码。在最后一个循环中有for循环,它生成名称和日期的随机顺序。在这个for循环中,我还想添加随机数,我也为它写了代码。有没有人可以帮我一起打印随机数呢?
String[] engineers = {"john", "Bob", "Smith", "Tom", "Ryan"};
List<String> names = Arrays.asList(engineers);
Collections.shuffle(names);
// for generating randon number
int min = 3;
int max = 10;
Random rand = new Random();
int a = rand.nextInt((max-min)+1) + min;
int b = rand.nextInt((max-min)+1) + min;
int c = rand.nextInt((max-min)+1) + min;
int d = rand.nextInt((max-min)+1) + min;
int e = rand.nextInt((max-min)+1) + min;
//System.out.println(a);
//System.out.println(b);
//System.out.println(c);
//System.out.println(d);
//System.out.println(e);
// for shuffle day generation
String[] day = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
List<String> days = Arrays.asList(day);
Collections.shuffle(days);
for(int i = 0; i < Integer.min(days.size(), names.size()); i++){
System.out.println("Engineer : " + names.get(i) + " "+ ";"+ " " + "Shift Day : " + days.get(i) + "Shift hours : " + );
}发布于 2021-04-17 04:17:37
更新
从您的评论中,我了解到您希望对names和days使用相同的随机索引。
为此,您可以存储从0到列表之一大小的整数,并随机化该列表,而不是为索引生成随机数。然后,使用这个随机化列表中的值作为索引,从两个列表中检索值。这还将确保没有任何行与任何其他行重复。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] day = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
List<String> days = Arrays.asList(day);
String[] persons = { "john", "Bob", "Smith", "Tom", "Ryan" };
List<String> names = Arrays.asList(persons);
// Store indices into a List and randomize it
List<Integer> randIndices = new ArrayList<>();
for (int i = 0; i < day.length; i++) {
randIndices.add(i);
}
Collections.shuffle(randIndices);
for (int i = 0; i < Integer.min(days.size(), names.size()); i++) {
int index = randIndices.get(i);
System.out.println("Day " + index + ": " + days.get(index) + ", Engineer: " + names.get(index));
}
}
}示例运行的输出:
Day 2: Wednesday, Engineer: Smith
Day 4: Friday, Engineer: Ryan
Day 0: Monday, Engineer: john
Day 1: Tuesday, Engineer: Bob
Day 3: Thursday, Engineer: Tom原始答案
我建议您使用ThreadLocalRandom.current().nextInt(int origin, int bound)在指定的原点(包含)和指定的边界(排除)之间生成一个伪随机int索引值。
此外,由于您使用的是随机索引,因此在这种情况下不需要使用Collections.shuffle。
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
String[] day = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
List<String> days = Arrays.asList(day);
// Collections.shuffle(days); // Unnecessary
String[] persons = { "john", "Bob", "Smith", "Tom", "Ryan" };
List<String> names = Arrays.asList(persons);
// Collections.shuffle(names); // Unnecessary
for (int i = 0; i < Integer.min(days.size(), names.size()); i++) {
System.out.printf("%-15s%-15s%n", names.get(ThreadLocalRandom.current().nextInt(0, i + 1)),
days.get(ThreadLocalRandom.current().nextInt(0, i + 1)));
}
}
}示例运行的输出:
john Monday
Bob Tuesday
john Tuesday
Bob Wednesday
Tom Thursday https://stackoverflow.com/questions/67131150
复制相似问题