Получение случайного значения из массива

У меня есть простое приложение, которое генерирует факты. Я хотел бы включить функцию, которая генерирует случайный факт вместо увеличения декременции.

Мой массив выглядит следующим образом.

public class Facts {
    String facts[] = {
        "Elephants are the only mammals that can't jump.",
        "Candles will burn longer and drip less if they are placed in the freezer a few hours before using.",
        "Potatoes have more chromosomes than humans.",
        "You burn more calories sleeping than you do watching television.",
        "Animals that lay eggs don't have belly buttons.",
    };

String factNumber[] = {
    "Fact 1",
    "Fact 2",
    "Fact 3",
    "Fact 4",
    "Fact 5",
};

public String randomButton() {

    Random r = new Random();
    return facts[i]
}

Ответ 1

Используйте случайный класс. У этого класса есть метод nextInt(int n) (doc) и цитата:

Возвращает псевдослучайное равномерно распределенное значение int между 0 (включительно) и указанное значение (исключение), взятое из этого последовательность генераторов случайных чисел. Общий договор nextInt что одно значение int в указанном диапазоне псевдослучайно сгенерировано и вернулся. Все n возможных значений int производятся с (приблизительно) равной вероятности...

Итак, вам нужно случайное число, которое на самом деле является случайным фактом, поэтому генерируйте случайное число между нулем и размером массива фактов:

Пример:

public String randomButton() {
    Random random = new Random();
    return facts[random.nextInt(facts.length)];
}

Ответ 2

Simple! Метод nextInt(facts.length) возвращает случайное целое число от 0 до длины массива. Поместите его как индекс массива для получения случайного:

Random rnd = new Random()
String randomFact = facts[rnd.nextInt(facts.length)];

Ответ 3

Попробуйте также

private Integer a = 0;
public String randomButton() {
  Random random = new Random();
  a = random.nextInt(facts.length);
}
String factNumber = facts.a;