我正在创建一个锦标赛生成器,其中有8个用户输入的团队。我需要做四分之一决赛,随机队之间有4场比赛。到目前为止,这是我的代码:
import java.util.Scanner;
public class A4Q1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("-----------------------------------------------------");
System.out.println(" Welcome to Tournament Outcome Predictor Program");
System.out.println("-----------------------------------------------------");
Scanner sc = new Scanner(System.in);
System.out.print("\nPlease enter a name for the football tournament: ");
String tName = sc.nextLine(); //name of tournament
int nbTeams = 8;
String[] footballTeams = new String [nbTeams];
System.out.println("\nPlease enter 8 participating teams: ");
for (int i = 0; i<nbTeams; i++) {
footballTeams[i] = sc.nextLine(); //storing 8 teams in array
}
我的问题是我不知道如何生成8个随机唯一数字。我想把这些数字0到7存储在一个新数组中,但我没有想法!
答案 0 :(得分:1)
这是一个非常简单的方法,可生成Integer
的随机数组,其中包含0和长度(不包括)之间的每个元素。
import java.util.*;
Integer[] randomArray(int length) {
Random random = new Random();
List<Integer> list = new LinkedList<>();
for (int k = 0; k < length; k++)
list.add(k);
Collections.shuffle(list);
return list.toArray(new Integer[] {});
}
每次调用它都会导致不同的输出:
System.out.println(Arrays.toString(randomArray(8)));
例如,它可以打印:[2, 4, 0, 5, 3, 6, 1, 7]
。
这个想法非常简单,我们生成一个包含您感兴趣的所有元素的列表,然后使用标准库中的内置Collections.shuffle
。
答案 1 :(得分:1)
像这样使用Math.random函数;
(int)(Math.random() * ((upperbound - lowerbound) + 1) + lowerbound);
其中lowerbound
包含且upperbound
独占。
生成随机值。