【问题标题】:How do I store random and unique numbers in an array in Java?如何在 Java 中的数组中存储随机数和唯一数?
【发布时间】:2017-11-07 03:31:58
【问题描述】:

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

【问题讨论】:

  • 您可以使用 Math.random() 生成介于 0 和 1 之间的随机数,如果这是您正在寻找的。要使其唯一,请将生成的随机数与已经存在的元素进行比较在将该值存储在数组中之前,在数组中。
  • 我想进行 4 场比赛,您可以让 Team 2 面对 Team 5,依此类推

标签: java arrays random


【解决方案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

【讨论】:

    【解决方案2】:

    像这样使用 Math.random 函数;

    (int)(Math.random() * ((upperbound - lowerbound) + 1) + lowerbound);
    

    其中lowerbound 是包容性的,upperbound 是独占性的。

    生成随机值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多