如何在Java中的数组中存储随机数和唯一数字?

时间:2017-11-07 03:31:58

标签: java arrays random

我正在创建一个锦标赛生成器,其中有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存储在一个新数组中,但我没有想法!

2 个答案:

答案 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独占。

生成随机值。